<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>VBNotebookFor.NET</title>
	
	<link>http://vbnotebookfor.net</link>
	<description>Articles on VB.NET and Software Development Team Leadership</description>
	<pubDate>Thu, 02 Apr 2009 17:45:42 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/VisualBasicNotebookFornet" type="application/rss+xml" /><feedburner:emailServiceId>VisualBasicNotebookFornet</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>How To Create a CAPTCHA Graphic in VB.NET</title>
		<link>http://feedproxy.google.com/~r/VisualBasicNotebookFornet/~3/X7EaWuK6YmQ/</link>
		<comments>http://vbnotebookfor.net/2007/11/06/how-to-create-a-captcha-graphic-in-vbnet/#comments</comments>
		<pubDate>Tue, 06 Nov 2007 22:08:23 +0000</pubDate>
		<dc:creator>jfrankcarr</dc:creator>
		
		<category><![CDATA[Code Examples]]></category>

		<guid isPermaLink="false">http://vbnotebookfor.net/2007/11/06/how-to-create-a-captcha-graphic-in-vbnet/</guid>
		<description><![CDATA[
In this article we&#8217;ll be creating a class to generate CAPTCHA graphics that you can use on web sites to help authenticate users as being human and not an&#160;automated process.
What Is CAPTCHA
CAPTCHA is an abbreviation for Completely Automated Public Turing test to tell Computers and Humans Apart. This method uses&#160;images of words or numbers that [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://vbnotebookfor.net/wp-content/uploads/2007/11/captcha.png' alt='An Example of a CAPTCHA Generated By This Class' title='An Example of a CAPTCHA Generated By This Class' vspace='5' hspace='5' align='left' />
<p>In this article we&#8217;ll be creating a class to generate CAPTCHA graphics that you can use on web sites to help authenticate users as being human and not an&nbsp;automated process.</p>
<p><strong>What Is CAPTCHA</strong></p>
<p>CAPTCHA is an abbreviation for <strong>C</strong>ompletely <strong>A</strong>utomated <strong>P</strong>ublic <strong>T</strong>uring test to tell <strong>C</strong>omputers and <strong>H</strong>umans <strong>A</strong>part. This method uses&nbsp;images of words or numbers that are, in theory, distorted and jumbled&nbsp;enough so that an optical character recognition program can&#8217;t read them but a human should be able to do so easily. </p>
<p>I&#8217;m not a big fan of this method myself since I think it interferes with the user experience. However, there is plenty of demand for them to be placed into systems that interact with the public on the Internet.</p>
<p><strong>The CAPTCHA Class</strong></p>
<p><a href='http://vbnotebookfor.net/wp-content/uploads/2007/11/captcha.zip' title='Code Example Class'>You can download the CAPTCHA class source code here.</a></p>
<p>This class is a simple one that builds a 5 character numeric string and places it on a grid background with random &#8216;noise&#8217;. Our properties include the height, width, and font along with the randomly generated value between 10000 and 99999 and the matching bitmap. The new method is available as a parameterless version for subclassing and one that allows you to pass in the height, width, and font.</p>
<p>The core routine is the GenerateNewCaptcha shown here:
<pre class="csharpcode">    <span class="kwrd">Public</span> <span class="kwrd">Sub</span> GenerateNewCaptcha()
        <span class="kwrd">If</span> _captchaFont <span class="kwrd">Is</span> <span class="kwrd">Nothing</span> <span class="kwrd">OrElse</span> _captchaHeight = 0 <span class="kwrd">OrElse</span> _captchaWidth = 0 <span class="kwrd">Then</span>
            <span class="kwrd">Exit</span> <span class="kwrd">Sub</span>
        <span class="kwrd">End</span> <span class="kwrd">If</span>
        _captchaCode = RandomValue.<span class="kwrd">Next</span>(10000, 100000).ToString
        _captchaImage = <span class="kwrd">New</span> Bitmap(_captchaWidth, _captchaHeight)
        Using CaptchaGraphics <span class="kwrd">As</span> Graphics = Graphics.FromImage(CaptchaImage)
            Using BackgroundBrush <span class="kwrd">As</span> <span class="kwrd">New</span> Drawing2D.HatchBrush(Drawing2D.HatchStyle.SmallGrid, Color.DimGray, Color.WhiteSmoke)
                CaptchaGraphics.FillRectangle(BackgroundBrush, 0, 0, _captchaWidth, _captchaHeight)
            <span class="kwrd">End</span> Using
            <span class="kwrd">Dim</span> CharacterSpacing <span class="kwrd">As</span> <span class="kwrd">Integer</span> = (_captchaWidth \ 5) - 1
            <span class="kwrd">Dim</span> HorizontalPosition <span class="kwrd">As</span> <span class="kwrd">Integer</span>
            <span class="kwrd">Dim</span> MaxVerticalPosition <span class="kwrd">As</span> <span class="kwrd">Integer</span>
            <span class="kwrd">For</span> <span class="kwrd">Each</span> CharValue <span class="kwrd">As</span> <span class="kwrd">Char</span> <span class="kwrd">In</span> _captchaCode.ToCharArray
                MaxVerticalPosition = _captchaHeight - Convert.ToInt32(CaptchaGraphics.MeasureString(CharValue, _captchaFont).Height)
                CaptchaGraphics.DrawString(CharValue, _captchaFont, Brushes.DimGray, HorizontalPosition, RandomValue.<span class="kwrd">Next</span>(0, MaxVerticalPosition))
                HorizontalPosition += CharacterSpacing + RandomValue.<span class="kwrd">Next</span>(-1, 1)
            <span class="kwrd">Next</span>
            <span class="kwrd">For</span> Counter <span class="kwrd">As</span> <span class="kwrd">Integer</span> = 0 <span class="kwrd">To</span> 24
                CaptchaGraphics.FillEllipse(Brushes.DimGray, RandomValue.<span class="kwrd">Next</span>(1, _captchaWidth), RandomValue.<span class="kwrd">Next</span>(1, _captchaHeight), RandomValue.<span class="kwrd">Next</span>(1, 4), RandomValue.<span class="kwrd">Next</span>(1, 4))
            <span class="kwrd">Next</span>
            <span class="kwrd">For</span> Counter <span class="kwrd">As</span> <span class="kwrd">Integer</span> = 0 <span class="kwrd">To</span> 24
                CaptchaGraphics.FillEllipse(Brushes.WhiteSmoke, RandomValue.<span class="kwrd">Next</span>(1, _captchaWidth), RandomValue.<span class="kwrd">Next</span>(1, _captchaHeight), RandomValue.<span class="kwrd">Next</span>(1, 4), RandomValue.<span class="kwrd">Next</span>(1, 4))
            <span class="kwrd">Next</span>
        <span class="kwrd">End</span> Using
    <span class="kwrd">End Sub</span></pre>
<p>Let&#8217;s look at some of the details of this routine.</p>
<p>First, notice that we&#8217;re generating random numbers in several places, most notably to generate the main code value. We also use random numbers to place the numbers and the noise bits.</p>
<p>The HatchBrush object is used to draw the grid background. This style could be changed to a different pattern. There are several variations you could try to get a unique effect. You could even randomize the background.</p>
<p>The characters from the randomly generated number are drawn onto the graphic one character at a time and are randomly placed along the vertical axis and slightly off kilter&nbsp;on the horizontal one.</p>
<p>The FillEllipse method of the Graphics object is used to create the noise at 50 different random points on the graphic. These little marks help obscure the actual characters from OCR&#8217;s and sometimes from humans as well. </p>
<p><strong>Using the Class</strong></p>
<p>Using the class is simple. You just create the class, display the graphic from it&nbsp;and verify user input against the value stored in the class. You can also regenerate the value if the user requests it. Remember that you will need to save the generated bitmap to disk&nbsp;in order to display it to a web user in an ASP.NET application.</p>
<p><strong>More You Can Add</strong></p>
<p>There are several things you could add to this class to enhance it. You could:</p>
<p>- Add the ability to accept strings<br />
- Add the ability to dynamically size the strings and the resulting bitmap<br />
- Add more distortion by using Graphics method to twist the output<br />
- Add more background noise options
</p>
<p>That&#8217;s all for this example. Let me know if you have any questions or observations by this example by leaving me a comment.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/VisualBasicNotebookFornet?a=X7EaWuK6YmQ:CoQFOYf02NQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/VisualBasicNotebookFornet?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://vbnotebookfor.net/2007/11/06/how-to-create-a-captcha-graphic-in-vbnet/feed/</wfw:commentRss>
		<feedburner:origLink>http://vbnotebookfor.net/2007/11/06/how-to-create-a-captcha-graphic-in-vbnet/</feedburner:origLink></item>
		<item>
		<title>Application Plug-ins Code Example Update</title>
		<link>http://feedproxy.google.com/~r/VisualBasicNotebookFornet/~3/DEfe2ovD4Nw/</link>
		<comments>http://vbnotebookfor.net/2007/11/05/application-plug-ins-code-example-update/#comments</comments>
		<pubDate>Mon, 05 Nov 2007 16:43:54 +0000</pubDate>
		<dc:creator>jfrankcarr</dc:creator>
		
		<category><![CDATA[Code Examples]]></category>

		<guid isPermaLink="false">http://vbnotebookfor.net/2007/11/05/application-plug-ins-code-example-update/</guid>
		<description><![CDATA[
As a follow-up to my previous article, How To Create Application Plug-ins In VB.NET, Karl Stoney asked for a more complete example. Hopefully this update will help.
Tips and Tricks
One trick you can use to make your development of these plugins easier is to have multiple projects in your solution. In the case of the demo [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://vbnotebookfor.net/wp-content/uploads/2007/10/plugin.png' alt='Update On Creating Application Plugins in VB.NET' title='Update On Creating Application Plugins in VB.NET' hspace='5' vspace='5' align='left' />
<p>As a follow-up to my previous article, <a href="http://vbnotebookfor.net/2007/10/09/how-to-create-application-plug-ins-in-vbnet/">How To Create Application Plug-ins In VB.NET</a>, Karl Stoney asked for a more complete example. Hopefully this update will help.</p>
<p><strong>Tips and Tricks</strong></p>
<p>One trick you can use to make your development of these plugins easier is to have multiple projects in your solution. In the case of the demo app I added the main demo project, the interface project, and the two plugin projects to the solution. If I wanted to have another plugin, I would just add it to this solution. This makes debugging easier and saves system memory somewhat vs. running separate instances of Visual Studio</p>
<p>Another trick is to change the compile output folder to a common folder. This puts all of the executable in the same folder, once again for easy debugging. Remember that your plugins when deployed must be in the same folder as the calling application. </p>
<p><strong>The Demo</strong></p>
<p>In this code example, we have a PluginDemo application that can call various plugins that conform to the IMyPlugIn interface. We also have a PlugIn1 and a PlugIn2 projects that implement the interface in different ways. PlugIn1 uses a standard message box while PlugIn2 uses a custom form.</p>
<p>The core code itself isn&#8217;t&nbsp;any different from the code presented in the previous article. The LoadPlugIn routine is the key to using Reflection to load the plugin. To get a better understanding of how it all comes together I recommend stepping through the process as it runs.</p>
<p>The zip file contains the project code but I excluded the executables. After unzipping the project you will need to first build the PlugInInterface project by itself. This will create the DLL that the other 3 projects need to reference. Once you&#8217;ve done this, do a Build Solution and it should be ready to run. </p>
<p><strong>Here&#8217;s the demo zip file: <a href='http://vbnotebookfor.net/wp-content/uploads/2007/11/plugindemo.zip' title='VB.NET Application Plugin Demo'>VB.NET Application Plugin Demo</a></strong></p>
<p>Let me know if you have any questions about this demo or application plug-ins in VB.NET.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/VisualBasicNotebookFornet?a=DEfe2ovD4Nw:NiFwmc9YCaA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/VisualBasicNotebookFornet?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://vbnotebookfor.net/2007/11/05/application-plug-ins-code-example-update/feed/</wfw:commentRss>
		<feedburner:origLink>http://vbnotebookfor.net/2007/11/05/application-plug-ins-code-example-update/</feedburner:origLink></item>
		<item>
		<title>Site News For 11/5/2007</title>
		<link>http://feedproxy.google.com/~r/VisualBasicNotebookFornet/~3/8EnqkVb5l-o/</link>
		<comments>http://vbnotebookfor.net/2007/11/05/site-news-for-1152007/#comments</comments>
		<pubDate>Mon, 05 Nov 2007 16:37:51 +0000</pubDate>
		<dc:creator>jfrankcarr</dc:creator>
		
		<category><![CDATA[Site Info]]></category>

		<guid isPermaLink="false">http://vbnotebookfor.net/2007/11/05/site-news-for-1152007/</guid>
		<description><![CDATA[Back From a Hiatus 
I took about a week hiatus from VB Notebook For .NET while I was working on my&#160;other, general topic, blog, OpTempo, and another yet-to-be-released web project but I&#8217;m back working on this site&#160;now. I just need to figure out a good way to do &#8216;re-runs&#8217; the next time I take a [...]]]></description>
			<content:encoded><![CDATA[<p><img title="I'll Be Back" alt="I'll Be Back" src="http://vbnotebookfor.net/wp-content/uploads/2007/09/av_3.gif" align="left" vspace='5' hspace='5'><strong>Back From a Hiatus</strong> </p>
<p>I took about a week hiatus from VB Notebook For .NET while I was working on my&nbsp;<a title="200 Posts By Nov 1, 2007" href="http://optempo.com">other, general topic, blog, OpTempo</a>, and another yet-to-be-released web project but I&#8217;m back working on this site&nbsp;now. I just need to figure out a good way to do &#8216;re-runs&#8217; the next time I take a break or work on other projects.</p>
<p><strong>Coming Up This Week</strong> </p>
<p>I&#8217;ve got my&nbsp;follow-up article on coaching&nbsp;that I should publish this week as well as a few follow-up and new article and demos.&nbsp;If you have a topic you would like for me to cover, let me know in a comment or email.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/VisualBasicNotebookFornet?a=8EnqkVb5l-o:YSIuodxtKKU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/VisualBasicNotebookFornet?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://vbnotebookfor.net/2007/11/05/site-news-for-1152007/feed/</wfw:commentRss>
		<feedburner:origLink>http://vbnotebookfor.net/2007/11/05/site-news-for-1152007/</feedburner:origLink></item>
		<item>
		<title>VB.NET Interview Questions #6</title>
		<link>http://feedproxy.google.com/~r/VisualBasicNotebookFornet/~3/TUJ3z936pK0/</link>
		<comments>http://vbnotebookfor.net/2007/10/28/vbnet-interview-questions-6/#comments</comments>
		<pubDate>Sun, 28 Oct 2007 14:40:07 +0000</pubDate>
		<dc:creator>jfrankcarr</dc:creator>
		
		<category><![CDATA[VB.NET Interview Questions]]></category>

		<guid isPermaLink="false">http://vbnotebookfor.net/2007/10/28/vbnet-interview-questions-6/</guid>
		<description><![CDATA[Here&#8217;s installment #6 of my VB.NET interview questions series. 
Previous Installments: #1,&#xA0; #2,&#xA0; #3,&#xA0; #4 , #5
Feel free to add a comment with your answers. Try to answer them before looking at the comments or searching MSDN or Google for an extra challenge. 
True Or False
1. Base-class constructors are not inherited by derived classes.
2. A [...]]]></description>
			<content:encoded><![CDATA[<p><img title="You rush a miracle man, you get rotten miracles." alt="You rush a miracle man, you get rotten miracles." src="http://vbnotebookfor.net/wp-content/uploads/2007/09/brainpower.png" align="left" />Here&#8217;s installment #6 of my VB.NET interview questions series. </p>
<p>Previous Installments: <a title="VB.NET Interview Questions #1" href="http://vbnotebookfor.net/2007/09/21/vbnet-interview-questions-1/">#1</a>,&#xA0; <a title="VB.NET Interview Questions #2" href="http://vbnotebookfor.net/2007/09/28/vbnet-interview-questions-2/">#2</a>,&#xA0; <a title="VB.NET Interview Questions #1" href="http://vbnotebookfor.net/2007/10/07/vbnet-interview-questions-3/">#3</a>,&#xA0; <a title="VB.NET Interview Questions #4" href="http://vbnotebookfor.net/2007/10/14/vbnet-interview-questions-4/">#4</a> , <a title="VB.NET Interview Questions #5" href="http://vbnotebookfor.net/2007/10/21/vbnet-interview-questions-5/">#5</a></p>
<p>Feel free to add a comment with your answers. Try to answer them before looking at the comments or searching MSDN or Google for an extra challenge. </p>
<p><strong>True Or False</strong></p>
<p>1. Base-class constructors are not inherited by derived classes.</p>
<p>2. A class may only implement a single interface.</p>
<p>3. A checkbox may have either a square or circular appearance.</p>
<p>4. HttpSessionState can only store string values.</p>
<p>5. A page object&#8217;s IsPostBack property is used to determine if the page is being loaded due to a postback.&#xA0; </p>
<p><strong>General VB.NET Questions</strong> </p>
<p>1. Should you throw exceptions in the Finally block? Why or why not?</p>
<p>2. How do you create a scrolling region on a form?</p>
<p>3. What are some differences between CType and DirectCast?</p>
<p>4. Should you use a &quot;sp_&quot; prefix on SQL Server stored procedures? Why or why not?</p>
<p>5. If you have an ASP.NET application with a Master Page how can you change meta data from child pages?</p>
<p><strong>Tough General Interview Questions</strong> </p>
<p>1. How do you think your previous experience will help you perform your work here? </p>
<p>2. Would you say that you&#8217;re a competitive person? Why or why not?</p>
<p>3. Why did you decided to get a degree in [job candidates college major]? </p>
<p>4. Why do you want to work at [insert company name here]? </p>
<p>5. Give an example of how you applied creativity in your current/former job? </p>
<p><strong>Open Ended Questions</strong> </p>
<p>1. Describe what you consider to be best practices for creating a testing environment. </p>
<p>2. You are given the task of developing an interface to a vendor&#8217;s web service. The documentation is very minimal for it and may be outdated. What approach would you take to developing this interface?&#xA0; </p>
<p>Have fun with these and let me know what you think about them by leaving a comment or answering the questions.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/VisualBasicNotebookFornet?a=TUJ3z936pK0:Bv7H36nzhuk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/VisualBasicNotebookFornet?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://vbnotebookfor.net/2007/10/28/vbnet-interview-questions-6/feed/</wfw:commentRss>
		<feedburner:origLink>http://vbnotebookfor.net/2007/10/28/vbnet-interview-questions-6/</feedburner:origLink></item>
		<item>
		<title>Introduction to Interfaces in VB.NET</title>
		<link>http://feedproxy.google.com/~r/VisualBasicNotebookFornet/~3/Wc66uRew5So/</link>
		<comments>http://vbnotebookfor.net/2007/10/23/introduction-to-interfaces-in-vbnet/#comments</comments>
		<pubDate>Tue, 23 Oct 2007 16:51:30 +0000</pubDate>
		<dc:creator>jfrankcarr</dc:creator>
		
		<category><![CDATA[VB.NET Tutorials]]></category>

		<guid isPermaLink="false">http://vbnotebookfor.net/2007/10/23/introduction-to-interfaces-in-vbnet/</guid>
		<description><![CDATA[
One problem some programmers new to VB.NET and object oriented programming&#160;in&#160;general have&#160;is understanding interfaces and how they related to classes. In this article, we&#8217;ll take an introductory look at interfaces and some of the ways you can use them in your VB.NET applications.
What is an Interface?
To put it in simple terms, an interface is a [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://vbnotebookfor.net/wp-content/uploads/2007/10/interface.png' alt='Implements IPipeline, IWorker' title='Implements IPipeline, IWorker' align='left' vspace='5' hspace='5' />
<p>One problem some programmers new to VB.NET and object oriented programming&nbsp;in&nbsp;general have&nbsp;is understanding interfaces and how they related to classes. In this article, we&#8217;ll take an introductory look at interfaces and some of the ways you can use them in your VB.NET applications.</p>
<p><strong>What is an Interface?</strong></p>
<p>To put it in simple terms, an interface is a definition of methods and properties. Sometimes this is referred to as a &#8216;contract&#8217;. If a class agrees to implement an interface&nbsp;it must implement all of the properties and methods defined.</p>
<p>One difference you&#8217;ll see in an interface vs. a class is that there is no code, only the templates,&nbsp;aka contracts, for the properties and methods. You&#8217;ll also notice that there is&nbsp;no&nbsp;access level defined. It&#8217;s always considered public. </p>
<p>Here&#8217;s an example interface:</p>
<pre class="csharpcode"><span class="kwrd">Public</span> <span class="kwrd">Interface</span> IPerson

    <span class="kwrd">Property</span> ID() <span class="kwrd">As</span> <span class="kwrd">Integer</span>

    <span class="kwrd">Property</span> FirstName() <span class="kwrd">As</span> <span class="kwrd">String</span>

    <span class="kwrd">Property</span> LastName() <span class="kwrd">As</span> <span class="kwrd">String</span>

<span class="kwrd">End</span> <span class="kwrd">Interface</span> </pre>
<p>This means that if a class implements the IPerson interface it will have to implement these routines. Here&#8217;s an example of a class implementing this interface:</p>
<pre class="csharpcode"><span class="kwrd">Public</span> <span class="kwrd">Class</span> Customer    <span class="kwrd">Implements</span> IPerson

    <span class="kwrd">Protected</span> _id <span class="kwrd">As</span> <span class="kwrd">Integer</span>
    <span class="kwrd">Protected</span> _firstName <span class="kwrd">As</span> <span class="kwrd">String</span><span class="kwrd">    Protected</span> _middleName <span class="kwrd">As</span> <span class="kwrd">String</span>
    <span class="kwrd">Protected</span> _lastName <span class="kwrd">As</span> <span class="kwrd">String</span>

    <span class="kwrd">Public</span> <span class="kwrd">Property</span> ID() <span class="kwrd">As</span> <span class="kwrd">Integer</span> <span class="kwrd">Implements</span> IPerson.ID
        <span class="kwrd">Get</span>
            <span class="kwrd">Return</span> _id
        <span class="kwrd">End</span> <span class="kwrd">Get</span>
        <span class="kwrd">Set</span>(<span class="kwrd">ByVal</span> value <span class="kwrd">As</span> <span class="kwrd">Integer</span>)
            _id = value
        <span class="kwrd">End</span> <span class="kwrd">Set</span>
    <span class="kwrd">End</span> <span class="kwrd">Property</span>

    <span class="kwrd">Public</span> <span class="kwrd">Property</span> FirstName() <span class="kwrd">As</span> <span class="kwrd">String</span> <span class="kwrd">Implements</span> IPerson.FirstName
        <span class="kwrd">Get</span>
            <span class="kwrd">Return</span> _firstName
        <span class="kwrd">End</span> <span class="kwrd">Get</span>
        <span class="kwrd">Set</span>(<span class="kwrd">ByVal</span> value <span class="kwrd">As</span> <span class="kwrd">String</span>)
            _firstName = value
        <span class="kwrd">End</span> <span class="kwrd">Set</span>
    <span class="kwrd">End</span> <span class="kwrd">Property</span></pre>
<pre class="csharpcode">    <span class="kwrd">Public</span> <span class="kwrd">Property</span> MiddleName() <span class="kwrd">As</span> <span class="kwrd">String</span>
        <span class="kwrd">Get</span>
            <span class="kwrd">Return</span> _middleName
        <span class="kwrd">End</span> <span class="kwrd">Get</span>
        <span class="kwrd">Set</span>(<span class="kwrd">ByVal</span> value <span class="kwrd">As</span> <span class="kwrd">String</span>)
            _middleName = value
        <span class="kwrd">End</span> <span class="kwrd">Set</span>
    <span class="kwrd">End</span> <span class="kwrd">Property</span>

    <span class="kwrd">Public</span> <span class="kwrd">Property</span> LastName() <span class="kwrd">As</span> <span class="kwrd">String</span> <span class="kwrd">Implements</span> IPerson.LastName
        <span class="kwrd">Get</span>
            <span class="kwrd">Return</span> _lastName
        <span class="kwrd">End</span> <span class="kwrd">Get</span>
        <span class="kwrd">Set</span>(<span class="kwrd">ByVal</span> value <span class="kwrd">As</span> <span class="kwrd">String</span>)
            _lastName = value
        <span class="kwrd">End</span> <span class="kwrd">Set</span>
    <span class="kwrd">End</span> Property<span class="kwrd">End</span> <span class="kwrd">Class</span> </pre>
<p>As you can see, each of the properties above, except for MiddleName,&nbsp;has an Implements statement that defines how it will fulfill the Interface contract. The rule is that you can add to the interface inside the implementing class but you can&#8217;t take away. </p>
<p>Remember that implementing an interface isn&#8217;t the same as creating an instance of a class or creating a subclass. All you&#8217;re doing is defining how the external interface should look, not what goes on inside. People do get confused over that point.</p>
<p><strong>Coding Interfaces</strong></p>
<p>Interfaces can be very simple or complex. Most current OOP thought suggests that interfaces be limited to a single method. For example, you might have an IUpdate interface that defines a single Update function and you might have another interface called ICreate that defines a single Create function. You would then combine them into classes that needed to implement them, as in this example:</p>
<pre class="csharpcode"><span class="kwrd">Public</span> <span class="kwrd">Interface</span> ICreate
    <span class="kwrd">Function</span> CreateNew(<span class="kwrd">ByVal</span> id <span class="kwrd">As</span> <span class="kwrd">Integer</span>) <span class="kwrd">As</span> <span class="kwrd">Boolean</span>
<span class="kwrd">End</span> <span class="kwrd">Interface</span>

<span class="kwrd">Public</span> <span class="kwrd">Interface</span> IUpdate
    <span class="kwrd">Function</span> Update(<span class="kwrd">ByVal</span> id <span class="kwrd">As</span> <span class="kwrd">Integer</span>) <span class="kwrd">As</span> <span class="kwrd">Boolean</span>
<span class="kwrd">End</span> Interface</pre>
<pre class="csharpcode"><span class="kwrd">Public</span> <span class="kwrd">Class</span> Customer
    <span class="kwrd">Implements</span> IPerson, IUpdate, ICreate</pre>
<p>As you can see, a class can implement multiple interfaces. Whether it&#8217;s better to design with a lot of different interfaces or to group them into logical sections is really up to your own needs. My own take is a bit of a compromise in that I keep them simple with just a few tightly related methods or properties but I don&#8217;t religiously limit each interface to a single item.</p>
<p>Another use for interfaces is in defining a common interface for a plug-in architecture as I mentioned in this previous article: <a href="http://vbnotebookfor.net/2007/10/09/how-to-create-application-plug-ins-in-vbnet/">How To Create Application Plug-ins In VB.NET</a>. In this case, you will want to have a more complex interface design in most cases since your main app will need a stronger connection to the plug-in.</p>
<p>Do you have any questions about using Interfaces in VB.NET? Please feel free to leave a comment and ask about it.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/VisualBasicNotebookFornet?a=Wc66uRew5So:FjpmnaZ4L4s:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/VisualBasicNotebookFornet?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://vbnotebookfor.net/2007/10/23/introduction-to-interfaces-in-vbnet/feed/</wfw:commentRss>
		<feedburner:origLink>http://vbnotebookfor.net/2007/10/23/introduction-to-interfaces-in-vbnet/</feedburner:origLink></item>
		<item>
		<title>VB.NET Interview Questions #5</title>
		<link>http://feedproxy.google.com/~r/VisualBasicNotebookFornet/~3/ogJr7sZ1LGY/</link>
		<comments>http://vbnotebookfor.net/2007/10/21/vbnet-interview-questions-5/#comments</comments>
		<pubDate>Sun, 21 Oct 2007 15:42:27 +0000</pubDate>
		<dc:creator>jfrankcarr</dc:creator>
		
		<category><![CDATA[VB.NET Interview Questions]]></category>

		<guid isPermaLink="false">http://vbnotebookfor.net/2007/10/21/vbnet-interview-questions-5/</guid>
		<description><![CDATA[Here&#8217;s installment #5 of my VB.NET interview questions series. 
Previous Installments: VB.NET Interview Questions #1, VB.NET Interview Questions #2, VB.NET Interview Questions #3, VB.NET Interview Questions #4
Feel free to add a comment with your answers. Try to answer them before looking at the comments or searching MSDN or Google for an extra challenge.
True Or False
1. [...]]]></description>
			<content:encoded><![CDATA[<p><img title="Ah, it's a test you want. We don't do 'tests'" alt="Ah, it's a test you want. We don't do 'tests'" hspace="hspace" src="http://vbnotebookfor.net/wp-content/uploads/2007/09/brainpower.png" align="left" vspace="vspace" />Here&#8217;s installment #5 of my VB.NET interview questions series. </p>
<p>Previous Installments: <a href="http://vbnotebookfor.net/2007/09/21/vbnet-interview-questions-1/">VB.NET Interview Questions #1</a>, <a href="http://vbnotebookfor.net/2007/09/28/vbnet-interview-questions-2/">VB.NET Interview Questions #2</a>, <a href="http://vbnotebookfor.net/2007/10/07/vbnet-interview-questions-3/">VB.NET Interview Questions #3</a>, <a href="http://vbnotebookfor.net/2007/10/14/vbnet-interview-questions-4/">VB.NET Interview Questions #4</a></p>
<p>Feel free to add a comment with your answers. Try to answer them before looking at the comments or searching MSDN or Google for an extra challenge.</p>
<p><strong>True Or False</strong></p>
<p>1. You can access variables declared in the Try block inside the corresponding Catch handler.</p>
<p>2. You don&#8217;t need to specify a default value for an optional parameter.</p>
<p>3. When updating a bound control, you should call a DataSet&#8217;s Clear method before calling the DataAdapter&#8217;s Fill method.</p>
<p>4. When a web form is ready for garbage collection the Unload event is raised.</p>
<p>5. The AdRotator control can be bound to a database table.&#xA0; </p>
<p><strong>General VB.NET Questions</strong> </p>
<p>1. Explain the 3 basic tiers found in a well designed web application.</p>
<p>2. Explain the difference between TCP, UDP, and HTTP data transmissions.</p>
<p>3. When would you want to use &quot;Attach To Process&quot; to debug a .NET application?</p>
<p>4. Describe how you would go about validating a social security number entered by a user.</p>
<p>5. Describe methods you could use to avoid deadlock problems in a multithreaded application.</p>
<p><strong>Tough General Interview Questions</strong> </p>
<p>1. What habits in other programmers do you find most annoying? </p>
<p>2. How much time do you devote on a monthly basis to improving your skills? </p>
<p>3. Do you see yourself in a management role in the future? </p>
<p>4. Why did you choose programmer as a career? </p>
<p>5. What do you think is important in determining how well you will function with a team of programmers? </p>
<p><strong>Open Ended Questions</strong> </p>
<p>1. What criteria would you use to determine if a particular program should be written as a web based ASP.NET application or as a WinForms application? </p>
<p>2. If you needed to create custom web applications for each of a company&#8217;s clients that could be quickly brought online and modified as needed what are some of the things you would consider in your design? </p>
<p>Have fun with these and let me know what you think about them by leaving a comment or answering the questions.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/VisualBasicNotebookFornet?a=ogJr7sZ1LGY:dJF8RWZJto0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/VisualBasicNotebookFornet?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://vbnotebookfor.net/2007/10/21/vbnet-interview-questions-5/feed/</wfw:commentRss>
		<feedburner:origLink>http://vbnotebookfor.net/2007/10/21/vbnet-interview-questions-5/</feedburner:origLink></item>
		<item>
		<title>Winchester Mystery House Video</title>
		<link>http://feedproxy.google.com/~r/VisualBasicNotebookFornet/~3/upg-rEDkrGs/</link>
		<comments>http://vbnotebookfor.net/2007/10/20/winchester-mystery-house-video/#comments</comments>
		<pubDate>Sun, 21 Oct 2007 01:03:53 +0000</pubDate>
		<dc:creator>jfrankcarr</dc:creator>
		
		<category><![CDATA[Lighter Side]]></category>

		<guid isPermaLink="false">http://vbnotebookfor.net/2007/10/20/winchester-mystery-house-video/</guid>
		<description><![CDATA[I&#8217;ve long said that many VB6 applications remind me of the Winchester Mystery House. This house, built by the heiress to the Winchester Rifle Company, is a sprawling mansion that had additions made to it essentially on the whim of the owner. Architecturally its a mess, but it still functions, much like a lot of [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve long said that many VB6 applications remind me of the Winchester Mystery House. This house, built by the heiress to the Winchester Rifle Company, is a sprawling mansion that had additions made to it essentially on the whim of the owner. Architecturally its a mess, but it still functions, much like a lot of VB6 programs you see with hundreds of forms and modules and with nooks and crannies that just don&#8217;t make any sense at all.</p>
<p>Here&#8217;s a video tour by the guys who did the <a href="http://www.weirdus.com/stories/CA03.asp" title="Winchester Mystery House on Weird US" target="_blank">Weird US series</a> on the History Channel. It&#8217;s a fun video. Watch it and see if your VB6 app has something in common with this house.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div id="vvq4af196b2cbd2a" class="vvqbox vvqyoutube" style="width:425px;height:335px;">
<p><a href="http://www.youtube.com/watch?v=rgxXdJ-E5Cw">http://www.youtube.com/watch?v=rgxXdJ-E5Cw</a></p>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/VisualBasicNotebookFornet?a=upg-rEDkrGs:AL1Bne2q00I:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/VisualBasicNotebookFornet?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://vbnotebookfor.net/2007/10/20/winchester-mystery-house-video/feed/</wfw:commentRss>
		<feedburner:origLink>http://vbnotebookfor.net/2007/10/20/winchester-mystery-house-video/</feedburner:origLink></item>
		<item>
		<title>Site News for 10/14/07 through 10/20/07</title>
		<link>http://feedproxy.google.com/~r/VisualBasicNotebookFornet/~3/ofQhHg6DP_s/</link>
		<comments>http://vbnotebookfor.net/2007/10/20/site-news-for-101407-through-102007/#comments</comments>
		<pubDate>Sat, 20 Oct 2007 14:09:35 +0000</pubDate>
		<dc:creator>jfrankcarr</dc:creator>
		
		<category><![CDATA[Site Info]]></category>

		<guid isPermaLink="false">http://vbnotebookfor.net/2007/10/20/site-news-for-101407-through-102007/</guid>
		<description><![CDATA[Trying to Keep Things Balanced 
I&#8217;ve been working hard on my new &#34;anything goes&#34; speed blog, OpTempo, but I&#8217;m trying to keep the quality up here as well. I may not post quite as frequently here over the next few weeks, but I&#8217;ll make every post count. I&#8217;ll at least have one general programming article [...]]]></description>
			<content:encoded><![CDATA[<p><img title="Busy, Busy, Busy" alt="Busy, Busy, Busy" src="http://vbnotebookfor.net/wp-content/uploads/2007/09/av_3.gif" align="left" /><strong>Trying to Keep Things Balanced</strong> </p>
<p>I&#8217;ve been working hard on my new <a title="200 Posts By Nov 1, 2007" href="http://optempo.com">&quot;anything goes&quot; speed blog, OpTempo</a>, but I&#8217;m trying to keep the quality up here as well. I may not post quite as frequently here over the next few weeks, but I&#8217;ll make every post count. I&#8217;ll at least have one general programming article and two tutorial or code example articles a week plus my weekly VB.NET Interview Questions and Link Round-Up columns.</p>
<p><strong>Most Popular Posts</strong> </p>
<p>Here are the 10 most popular posts of the week: </p>
<ul>
<ol><a href="http://vbnotebookfor.net/2007/10/11/should-you-pursue-a-career-in-programming/">Should You Pursue a Career In Programming?</a></ol>
<ol><a href="http://vbnotebookfor.net/2007/07/19/3-handy-vbnet-string-functions-you-can-use/">3 Handy VB.NET String Functions You Can Use</a></ol>
<ol><a href="http://vbnotebookfor.net/2007/10/07/vbnet-interview-questions-3/">VB.NET Interview Questions #3</a></ol>
<ol><a href="http://vbnotebookfor.net/2007/10/18/practice-practice-practice/">Practice, Practice, Practice</a></ol>
<ol><a href="http://vbnotebookfor.net/2007/09/28/how-to-pass-data-between-forms-in-vbnet/">How To Pass Data Between Forms in VB.NET</a></ol>
<ol><a href="http://vbnotebookfor.net/2007/09/24/how-to-update-controls-using-backgroundworker-in-vbnet/">How To Update Controls Using BackgroundWorker in VB.NET</a></ol>
<ol><a href="http://vbnotebookfor.net/2007/09/07/3-more-useful-vbnet-string-functions/">3 More Useful VB.NET String Functions</a></ol>
<ol><a href="http://vbnotebookfor.net/2007/09/27/introduction-to-nullable-types-in-vbnet/">Introduction to Nullable Types in VB.NET</a></ol>
<ol><a href="http://vbnotebookfor.net/2007/05/27/systemnetmail-how-to/">System.Net.Mail How To</a></ol>
<ol><a href="http://vbnotebookfor.net/2007/09/21/vbnet-interview-questions-1/">VB.NET Interview Questions #1</a></ol>
</ul>
<p>&nbsp;</p>
<p><strong>Coming Up Next Week</strong> </p>
<p>With any luck I&#8217;ll publish my follow-up article on coaching on Monday. I also have an overview article on Interfaces that someone requested just about ready as well. If you have a topic you would like for me to cover, let me know in a comment or email.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/VisualBasicNotebookFornet?a=ofQhHg6DP_s:VFigLrjcUA0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/VisualBasicNotebookFornet?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://vbnotebookfor.net/2007/10/20/site-news-for-101407-through-102007/feed/</wfw:commentRss>
		<feedburner:origLink>http://vbnotebookfor.net/2007/10/20/site-news-for-101407-through-102007/</feedburner:origLink></item>
		<item>
		<title>Introduction to the Comparer Delegate</title>
		<link>http://feedproxy.google.com/~r/VisualBasicNotebookFornet/~3/iMt5BW8T9Ik/</link>
		<comments>http://vbnotebookfor.net/2007/10/19/introduction-to-the-comparer-delegate/#comments</comments>
		<pubDate>Fri, 19 Oct 2007 17:12:49 +0000</pubDate>
		<dc:creator>jfrankcarr</dc:creator>
		
		<category><![CDATA[VB.NET Tutorials]]></category>

		<guid isPermaLink="false">http://vbnotebookfor.net/2007/10/19/introduction-to-the-comparer-delegate/</guid>
		<description><![CDATA[
Once you have data in a generic List or Dictionary you may find that you need to sort it into the order you need. This is fairly easy if you&#8217;re using simple data types since .NET provides default comparers&#160;but it can get a little trickier if you need to sort objects. In this article we&#8217;ll [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://vbnotebookfor.net/wp-content/uploads/2007/10/comparer.png' alt='The Comparer Delegate Does the Hard Work for You' title='The Comparer Delegate Does the Hard Work for You' vspace='5' hspace='5' align='left' />
<p>Once you have data in a generic List or Dictionary you may find that you need to sort it into the order you need. This is fairly easy if you&#8217;re using simple data types since .NET provides default comparers&nbsp;but it can get a little trickier if you need to sort objects. In this article we&#8217;ll look at how to use Comparer Delegates to do this.</p>
<p><strong>What is a Comparer Delegate?</strong> </p>
<p>A comparer delegate is a routine that is used to compare two objects. It returns a 1 if the&nbsp;value of the first object is greater, -1 if the value of the first object is lesser, and 0 if the objects are equal. Since we&#8217;re working with objects we can compare multiple values in the two objects to determine which is greater than the other. </p>
<p><strong>Code Example #1</strong></p>
<p>In this example we&#8217;ll look at sorting PointF coordinates by their distance from 0,0. First, let&#8217;s load up our list and call the Sort method with our comparer that we&#8217;ll write in a moment.</p>
<pre class="csharpcode"><span class="kwrd">Dim</span> CoordinateList <span class="kwrd">As</span> <span class="kwrd">New</span> List(Of PointF)(<span class="kwrd">New</span> PointF() {<span class="kwrd">New</span> PointF(14, 22), <span class="kwrd">New</span> PointF(17, 21), _
                                          <span class="kwrd">New</span> PointF(15, 8), <span class="kwrd">New</span> PointF(15, 20), _
                                          <span class="kwrd">New</span> PointF(16, 7), <span class="kwrd">New</span> PointF(15, 21), _
                                          <span class="kwrd">New</span> PointF(17, 7), <span class="kwrd">New</span> PointF(16, 21), _
                                          <span class="kwrd">New</span> PointF(14, 23)})
CoordinateList.Sort(<span class="kwrd">AddressOf</span> ComparePointF)</pre>
<p>
Now, let&#8217;s code our comparer routine, ComparePointF:</p>
<pre class="csharpcode"><span class="kwrd">Public</span> <span class="kwrd">Function</span> ComparePointF(<span class="kwrd">ByVal</span> positionOne <span class="kwrd">As</span> PointF, <span class="kwrd">ByVal</span> positionTwo <span class="kwrd">As</span> PointF) <span class="kwrd">As</span> <span class="kwrd">Integer</span>
    <span class="kwrd">Dim</span> DistanceOne <span class="kwrd">As</span> <span class="kwrd">Double</span> = Math.Sqrt((positionOne.X ^ 2) + (positionOne.Y ^ 2))
    <span class="kwrd">Dim</span> DistanceTwo <span class="kwrd">As</span> <span class="kwrd">Double</span> = Math.Sqrt((positionTwo.X ^ 2) + (positionTwo.Y ^ 2))
    <span class="kwrd">If</span> DistanceOne &gt; DistanceTwo <span class="kwrd">Then</span>
        <span class="kwrd">Return</span> 1
    <span class="kwrd">ElseIf</span> DistanceOne &lt; DistanceTwo <span class="kwrd">Then</span>
        <span class="kwrd">Return</span> -1
    <span class="kwrd">Else</span>
        <span class="kwrd">Return</span> 0
    <span class="kwrd">End</span> <span class="kwrd">If</span>
<span class="kwrd">End Function</span></pre>
<p>Here we&#8217;re using the Pythagorean distance formula to determine the distance from 0,0 for each point and then comparing the results. The List object handles all of the sorting internally so the performance is quite good. </p>
<p><strong>Code Example #2</strong></p>
<p>In this example, we have an invoice object where we&#8217;re wanting to sort the objects first by customer type and then by the total amount of the invoice. Here&#8217;s what our comparer delegate would look like:</p>
<pre class="csharpcode"><span class="kwrd">Public</span> <span class="kwrd">Function</span> CompareInvoices(<span class="kwrd">ByVal</span> invoiceOne <span class="kwrd">As</span> Invoice, <span class="kwrd">ByVal</span> invoiceTwo <span class="kwrd">As</span> Invoice) <span class="kwrd">As</span> <span class="kwrd">Integer</span>
    <span class="kwrd">If</span> invoiceOne.CustomerType &gt; invoiceTwo.CustomerType <span class="kwrd">Then</span>
        <span class="kwrd">Return</span> 1
    <span class="kwrd">ElseIf</span> invoiceOne.CustomerType &lt; invoiceTwo.CustomerType <span class="kwrd">Then</span>
        <span class="kwrd">Return</span> -1
    <span class="kwrd">Else</span>
        <span class="kwrd">If</span> invoiceOne.Total &gt; invoiceTwo.Total <span class="kwrd">Then</span>
            <span class="kwrd">Return</span> 1
        <span class="kwrd">ElseIf</span> invoiceOne.Total &lt; invoiceTwo.Total <span class="kwrd">Then</span>
            <span class="kwrd">Return</span> -1
        <span class="kwrd">Else</span>
            <span class="kwrd">Return</span> 0
        <span class="kwrd">End</span> <span class="kwrd">If</span>
    <span class="kwrd">End</span> <span class="kwrd">If</span>
<span class="kwrd">End Function</span></pre>
<p>As you can see in this function, we first compare the customer type, then the total amount. Of course, you could make this even more complex for your sorting situations. All you have to keep in mind is your integer return value.</p>
<p>I hope these examples have been helpful to you in learning how to use the comparer delegate. If you have any further questions or observations about this subject, please feel free to leave a comment.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/VisualBasicNotebookFornet?a=iMt5BW8T9Ik:Ti9Kb9N2KaI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/VisualBasicNotebookFornet?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://vbnotebookfor.net/2007/10/19/introduction-to-the-comparer-delegate/feed/</wfw:commentRss>
		<feedburner:origLink>http://vbnotebookfor.net/2007/10/19/introduction-to-the-comparer-delegate/</feedburner:origLink></item>
		<item>
		<title>Link Round-Up for 10/18/07</title>
		<link>http://feedproxy.google.com/~r/VisualBasicNotebookFornet/~3/9PC-OKe_tes/</link>
		<comments>http://vbnotebookfor.net/2007/10/18/link-round-up-for-101807/#comments</comments>
		<pubDate>Thu, 18 Oct 2007 16:01:33 +0000</pubDate>
		<dc:creator>jfrankcarr</dc:creator>
		
		<category><![CDATA[Link Round-Up]]></category>

		<guid isPermaLink="false">http://vbnotebookfor.net/2007/10/18/link-round-up-for-101807/</guid>
		<description><![CDATA[I&#8217;ve been a bit busy this week so I haven&#8217;t got as many links this time around. 
Careers
I did run across a few good career related links though, such as this one on Tech Republic: Write a resume that will land you a programming job. It has&#160;some very detailed tips on how to write a [...]]]></description>
			<content:encoded><![CDATA[<p><img title="" alt="" hspace="5" src="http://vbnotebookfor.net/wp-content/uploads/2007/07/links.png" align="left" vspace="5">I&#8217;ve been a bit busy this week so I haven&#8217;t got as many links this time around. </p>
<p><strong>Careers</strong></p>
<p>I did run across a few good career related links though, such as this one on Tech Republic: <a href="http://blogs.techrepublic.com.com/programming-and-development/?p=521" target="_blank">Write a resume that will land you a programming job</a>. It has&nbsp;some very detailed tips on how to write a resume that will&nbsp;get you an interview. </p>
<p>Also, on the career front, there was this good article by Rob Walling called&nbsp;<a href="http://www.softwarebyrob.com/2007/10/15/q-a-on-leaving-management-for-development/" target="_blank">Q &amp; A on Leaving Management for Development</a>. It&#8217;s a follow-up on an earlier article he had written on this topic but it has good info all on its own. Also check out the rest of his site for more good stuff.</p>
<p><strong>Architecture and Methods</strong></p>
<p>I found this article, <a href="http://on-agile.blogspot.com/2007/10/how-to-tell-if-youre-doing-agile-right.html" target="_blank">How To Tell If You&#8217;re Doing Agile Right</a>, by Ryan Cooper. I think he does a good job of making the business case for Agile development although I&#8217;m not sure if that&#8217;s what he intended to do.</p>
<p>Niclas Nilsson wrote this piece on <a href="http://www.infoq.com/news/2007/10/top-ten-architecture-mistakes" target="_blank">Top Ten Software Architecture Mistakes</a> that&#8217;s pretty good. Actually he&#8217;s just condensing what Eoin Woods had said in&nbsp;this longer, 2 part,&nbsp;article, <a href="http://www.itarchitect.co.uk/articles/display.asp?id=371" target="_blank">Avoiding the Icebergs</a>. </p>
<p><strong>Programming</strong></p>
<p>Saptarshi Purkayastha applies a little Eastern philosophy in this article, <a href="http://sunnytalkstech.blogspot.com/2007/10/programming-lesson-you-are-bug.html" target="_blank">Programming Lesson: You Are The Bug&#8230;</a>. He&#8217;s working on some follow-up articles with the same kind of theme so check back with him later as well.</p>
<p>That&#8217;s all the links for this week. As always, let me know of any interesting .NET or general software development links by leaving me a comment or dropping me an email.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/VisualBasicNotebookFornet?a=9PC-OKe_tes:oz7Y3bumEiU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/VisualBasicNotebookFornet?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://vbnotebookfor.net/2007/10/18/link-round-up-for-101807/feed/</wfw:commentRss>
		<feedburner:origLink>http://vbnotebookfor.net/2007/10/18/link-round-up-for-101807/</feedburner:origLink></item>
	</channel>
</rss>
