<?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>To Hell in a Handbasket &#187; Programming</title>
	<atom:link href="http://ericsilva.org/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://ericsilva.org</link>
	<description>General Views, Opinions, and Observations in the World Around Me by Eric Silva</description>
	<lastBuildDate>Mon, 05 Sep 2011 13:48:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Syncing Gmail Contacts Birthdays and Events with Google Calendar</title>
		<link>http://ericsilva.org/2011/05/10/syncing-gmail-contacts-birthdays-and-events-with-google-calendar/</link>
		<comments>http://ericsilva.org/2011/05/10/syncing-gmail-contacts-birthdays-and-events-with-google-calendar/#comments</comments>
		<pubDate>Tue, 10 May 2011 17:56:34 +0000</pubDate>
		<dc:creator>Eric Silva</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[InterWebNet]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Calendar]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://ericsilva.org/2011/05/10/syncing-gmail-contacts-birthdays-and-events-with-google-calendar/</guid>
		<description><![CDATA[I am horrible with other people’s important dates, e.g., birthdays, anniversaries, date you got your appendix removed, etc. I just realized I should put all that info into my Gmail Contacts, and then it will appear on my Google Calendar automatically. Oh wait… It doesn’t show up. Damn. Why doesn’t it work? Turns out, this [...]]]></description>
			<content:encoded><![CDATA[<p>I am horrible with other people’s important dates, e.g., birthdays, anniversaries, date you got your appendix removed, etc.</p>
<p>I just realized I should put all that info into my Gmail Contacts, and then it will appear on my Google Calendar automatically. Oh wait… It doesn’t show up. Damn. Why doesn’t it work?</p>
<p>Turns out, this obviously valued feature is not turned on by default, but it is available.&#160; To get your contacts’ birthdays and other events to show up, simply perform the following in Google Calendar:</p>
<p>Click <b>Settings </b>(the little gear icon in the upper right corner of the screen), then <b>Calendars </b>(link just under the &quot;Calendar Settings&quot; tab), then the <b>Browse Interesting Calendars </b>(lower right) link, then <b>More </b>(under the heading), and finally <b>Subscribe </b>next to the Contacts&#8217; birthdays and events.</p>
<p>Fantastic!&#160; Now you, and more importantly, I should have no reason to forget to remind our friends and family a Happy Birthday.</p>
]]></content:encoded>
			<wfw:commentRss>http://ericsilva.org/2011/05/10/syncing-gmail-contacts-birthdays-and-events-with-google-calendar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code Review Does Not Have to Suck</title>
		<link>http://ericsilva.org/2011/02/24/code-review-does-not-have-to-suck/</link>
		<comments>http://ericsilva.org/2011/02/24/code-review-does-not-have-to-suck/#comments</comments>
		<pubDate>Thu, 24 Feb 2011 17:49:12 +0000</pubDate>
		<dc:creator>Eric Silva</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[CodeCollaborator]]></category>
		<category><![CDATA[Crucible]]></category>
		<category><![CDATA[Kiln]]></category>
		<category><![CDATA[Peer Code Review]]></category>
		<category><![CDATA[SmartBear]]></category>

		<guid isPermaLink="false">http://ericsilva.org/?p=453</guid>
		<description><![CDATA[I have been using this saying for the last 6 years, &#8220;Code Review Does Not Have to Suck&#8221;.  I just saw today that SmartBear, who makes the wonderful CodeCollaborator peer code review tool, which I also use, released a quick 3-minute video explaining this. Peer code review is a critical milestone step in any good [...]]]></description>
			<content:encoded><![CDATA[<p>I have been using this saying for the last 6 years, &#8220;Code Review Does Not Have to Suck&#8221;.  I just saw today that SmartBear, who makes the wonderful <a href="http://smartbear.com/products/development-tools/code-review/features/">CodeCollaborator</a> peer code review tool, which I also use, released <a href="http://smartbear.com/support/screencasts/codecollaborator/not-suck-ad">a quick 3-minute video</a> explaining this.</p>
<p>Peer code review is a critical milestone step in any good development process; especially with distributed teams.  <a href="http://smartbear.com/products/development-tools/code-review/features/">CodeCollaborator</a>, <a href="http://www.atlassian.com/software/crucible/">Crucible</a>, and <a href="http://www.fogcreek.com/kiln/">Kiln</a> are all great tools for facilitating peer code review without having to go through all the headache of gathering files, scheduling meetings, pissing off your co-workers, etc.</p>
<p>Check out the <a href="http://smartbear.com/support/screencasts/codecollaborator/not-suck-ad">video</a>.  It&#8217;s worth the 3-minutes.</p>
]]></content:encoded>
			<wfw:commentRss>http://ericsilva.org/2011/02/24/code-review-does-not-have-to-suck/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Design a Good API and Why It Matters</title>
		<link>http://ericsilva.org/2011/02/04/how-to-design-a-good-api-and-why-it-matters/</link>
		<comments>http://ericsilva.org/2011/02/04/how-to-design-a-good-api-and-why-it-matters/#comments</comments>
		<pubDate>Fri, 04 Feb 2011 16:48:07 +0000</pubDate>
		<dc:creator>Eric Silva</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://ericsilva.org/2011/02/04/how-to-design-a-good-api-and-why-it-matters/</guid>
		<description><![CDATA[I am starting to design a new API for an application that will need to integrate with other applications. Before doing so, I always make it a point to re-watch and re-read this presentation given by Joshua Bloch from Google.&#160; Joshua does a fantastic job going over the DOs and DON’Ts of good API design. [...]]]></description>
			<content:encoded><![CDATA[<p>I am starting to design a new API for an application that will need to integrate with other applications.</p>
<p>Before doing so, I always make it a point to re-watch and re-read this presentation given by <a href="http://en.wikipedia.org/wiki/Joshua_Bloch">Joshua Bloch</a> from Google.&#160; Joshua does a fantastic job going over the DOs and DON’Ts of good API design.</p>
<p>&#160;</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:472f067b-2ac2-4e4c-8c60-90c39537f3de" class="wlWriterEditableSmartContent">
<div><object width="448" height="252"><param name="movie" value="http://www.youtube.com/v/aAb7hSCtvGw?hl=en&amp;hd=1"></param><embed src="http://www.youtube.com/v/aAb7hSCtvGw?hl=en&amp;hd=1" type="application/x-shockwave-flash" width="448" height="252"></embed></object></div>
<div style="width:448px;clear:both;font-size:.8em">Joshua Bloch Presentation on API Design</div>
</div>
<p>&#160;</p>
<p>You can also download the slides <a href="http://lcsd05.cs.tamu.edu/slides/keynote.pdf">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ericsilva.org/2011/02/04/how-to-design-a-good-api-and-why-it-matters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>To root, or not to root</title>
		<link>http://ericsilva.org/2010/12/06/to-root-or-not-to-root/</link>
		<comments>http://ericsilva.org/2010/12/06/to-root-or-not-to-root/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 17:51:50 +0000</pubDate>
		<dc:creator>Eric Silva</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Humor]]></category>
		<category><![CDATA[Observations]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Hamlet]]></category>
		<category><![CDATA[HTC]]></category>
		<category><![CDATA[Incredible]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[root]]></category>
		<category><![CDATA[Shakespeare]]></category>

		<guid isPermaLink="false">http://ericsilva.org/2010/12/06/to-root-or-not-to-root/</guid>
		<description><![CDATA[To root, or not to root: that is the question: Whether &#8217;tis nobler in the mind to suffer The crap of HTC is not outrageous fortune, Or to take arms against a sea of useless apps, And by opposing end them? To root, to be free; No more; and by freedom to say we end [...]]]></description>
			<content:encoded><![CDATA[<p>To root, or not to root: that is the question:</p>
<p>Whether &#8217;tis nobler in the mind to suffer</p>
<p>The crap of HTC is not outrageous fortune,</p>
<p>Or to take arms against a sea of useless apps,</p>
<p>And by opposing end them? To root, to be free;</p>
<p>No more; and by freedom to say we end</p>
<p>The heart-ache and the thousand worthless apps</p>
<p>That cannot be uninstalled, ‘tis unavailable option</p>
<p>Devoutly to be wish’d. To root, to be free:</p>
<p>To freedom, perchance to control: ay, there’s the rub:</p>
<p>For that freedom of rooting what mistakes may come</p>
<p>When we have removed the controls in place that make us mortal,</p>
<p>Must give us pause; there’s the respect</p>
<p>That makes calamity of superuser privs;</p>
<p>For who would bear the segfaults and core dumps of time,</p>
<p>The oppressor’s wrong, the geek’s contumely,</p>
<p>The prags of despised garbage-ware, the sudo’s delay,</p>
<p>The insolence of Footprints and the Peep</p>
<p>That patient merit of the unworthy takes,</p>
<p>When he himself might his rm –rf make</p>
<p>With a bare sudo? Who would fardels bear?</p>
<p>To grunt and swear under a weary life,</p>
<p>But that the dread of something after root,</p>
<p>The undiscover’d access from whose bourn</p>
<p>No n00b returns, puzzles the will</p>
<p>And makes us rather bear those typos we have</p>
<p>Than make other that we know not of?</p>
<p>Thus conscience does make cowards of us all;</p>
<p>And thus the native hue of resolution</p>
<p>Is sicklied o’er with the pale cast of thought,</p>
<p>And enterprises of great pith and moment</p>
<p>With this regard their currents turn awry,</p>
<p>And lose the stability of my phone. – root you now!</p>
<p>The fair Incredible! Fantastic, in thy orisons</p>
<p>Be all my sudo remember’d.</p>
<p><em>(from Hamlet 3/1 – slightly altered by Eric Silva)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://ericsilva.org/2010/12/06/to-root-or-not-to-root/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple Calendar Control for Web Application</title>
		<link>http://ericsilva.org/2010/03/19/simple-calendar-control-for-web-application/</link>
		<comments>http://ericsilva.org/2010/03/19/simple-calendar-control-for-web-application/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 19:07:08 +0000</pubDate>
		<dc:creator>Eric Silva</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[InterWebNet]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Calendar]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://ericsilva.org/?p=379</guid>
		<description><![CDATA[I originally did this back in 2007, but did not want to lose the content, so I decided to put it up here. I found a robust and relatively simple calendar control to use for web UIs. It can use a pop-up window or a floating &#60;div&#62; tag. I prefer the latter as it makes [...]]]></description>
			<content:encoded><![CDATA[<p>I originally did this back in 2007, but did not want to lose the content, so I decided to put it up here.</p>
<p>I found a robust and relatively simple calendar control to use for web UIs.  It can use a pop-up window or a floating <code>&lt;div&gt;</code> tag.  I prefer the latter as it makes the page look good and avoids a pop-up.</p>
<p>To use the control simply put the <a href='http://ericsilva.org/wp-content/uploads/2010/03/CalendarPopup.js'>CalendarPopup.js</a> file in your application&#8217;s &#8220;scripts&#8221; directory and be sure to include it in your JSP. <em>(I used this in a Java app, but you can apply it to any language.)</em></p>
<p>Download the <a href="http://ericsilva.org/wp-content/uploads/2010/03/cal.gif"><img src="http://ericsilva.org/wp-content/uploads/2010/03/cal.gif" alt="" title="cal.gif" width="16" height="16" /></a> and put it in your images directory.</p>
<p>Add the following lines to your application&#8217;s JavaScript file (or include on the same page if you don&#8217;t have an external JS file):</p>
<pre class="brush: jscript; title: ; notranslate">
// Set up Calendar control
var calObj = new CalendarPopup(&quot;calDiv&quot;);
calObj.showNavigationDropdowns();
calObj.setMonthNames('JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC');

// Handle the Calendar control
function doCalendar(destObjId, srcObj) {
    calObj.select(document.getElementById(destObjId),srcObj.id,'dd-MMM-yyyy');
}
</pre>
<p>Then add the following lines to your JSP:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;script&gt;document.write(getCalendarStyles());&lt;/script&gt;
</pre>
<p>In your JSP, add the following HTML code where you want your date field and calendar control:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;input id=&quot;dateField&quot; style=&quot;width: auto;&quot; maxlength=&quot;11&quot; name=&quot;actualDate&quot; size=&quot;25&quot; type=&quot;text&quot; /&gt;
&lt;img id=&quot;imgCal&quot; onclick=&quot;doCalendar('dateField',this);return false;&quot; src=&quot;cal.gif&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;
</pre>
<p>That&#8217;s it!</p>
<p>In order to workaround IE 6&#8242;s inability to recognize the z-index attribute on the  tag, I made some modifications to the original JavaScript code. You will need to pass the an ID value to be used for the hidden  that will overlay the  box. </p>
<pre class="brush: jscript; title: ; notranslate">
var calObj = new CalendarPopup(&quot;calDiv&quot;, &quot;calFrame&quot;);
</pre>
<p>You will also need to specify the following styles in a stylesheet.  The ID values in the stylesheet must match the names of your DIV and IFRAME IDs on your page. </p>
<pre class="brush: css; title: ; notranslate">
div#calDiv {
    position:absolute; visibility:hidden;
    background-color:white;
    layer-background-color:white;
}
.select-free {
    position:absolute; z-index:10;/*any value*/
    overflow:hidden;/*must have*/
    width:152px;/*do not change value for calendar control */;
}
.select-free iframe#calFrame {
    display:none;/*sorry for IE5*/
    display:block;/*sorry for IE5*/
    position:absolute;/*must have*/
    top:0;/*must have*/
    left:0;/*must have*/
    z-index:-1;/*must have*/
    filter:mask();/*must have*/
    width:3000px;/*must have for any big value*/
    height:3000px/*must have for any big value*/;
}
</pre>
<p>Your JSP now needs the following line: </p>
<pre class="brush: xml; title: ; notranslate">
&lt;div id=&quot;calDiv&quot; class=&quot;select-free&quot;&gt;&lt;/div&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://ericsilva.org/2010/03/19/simple-calendar-control-for-web-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Primality Test v2.0</title>
		<link>http://ericsilva.org/2009/12/14/primality-test-v2-0/</link>
		<comments>http://ericsilva.org/2009/12/14/primality-test-v2-0/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 18:02:44 +0000</pubDate>
		<dc:creator>Eric Silva</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Math]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[prime numbers]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://ericsilva.org/?p=359</guid>
		<description><![CDATA[After feedback from some friends of mine, and doing a little bit of background research, I am writing this update to my original post last week.  As it turns out, by checking all the numbers in the form 6k ± 1  instead of checking each number up to the input value, I have increased the speed [...]]]></description>
			<content:encoded><![CDATA[<p>After feedback from some friends of mine, and doing a little bit of <a href="http://en.wikipedia.org/wiki/Primality_test" target="_blank">background research</a>, I am writing this update to my <a href="http://ericsilva.org/2009/12/10/determining-if-a-number-is-prime/" target="_self">original post last week</a>.  As it turns out, by checking all the numbers in the form 6<em>k</em> ± 1 <img style="vertical-align: middle; margin: 0px; border: initial none initial;" src="http://upload.wikimedia.org/math/2/8/e/28edd0f7feeaea1aac75a80e84bc048c.png" alt="\scriptstyle{}\leq\sqrt n" /> instead of checking each number up to the input value, I have increased the speed by 7 times! determineIsPrime3 (line 48 below) is the fastest algorithm so far.  determineIsPrime2, a simple comparision against the <img src="http://upload.wikimedia.org/math/f/8/d/f8d9ab3dcb0f9aee56999cd1fc1f7b21.png" alt="\scriptstyle\sqrt n" />, was twice as fast as the original algorithm.</p>
<p>For now, I am putting this one to bed.  It was a fun exercise, but I have got what I need from it.</p>
<pre class="brush: python; gutter: true; title: ; toolbar: true; notranslate">
'''
Checks the specified value to determine if it is a prime number.
If it is not prime the divisor will be returned instead.

@author: Eric Silva
'''

import math, time

#Change this value to whatever value you want to test for prime.
#testValue = 65027
#testValue = 155188329701
testValue = 99194853094755497
#testValue = 10888869450418352160768000001
print 'Testing %d...' % testValue

def determineIsPrime(testPrime):
    if testPrime % 2 == 0:
        return 'Divisible by 2'
    if testPrime % 3 == 0:
        return 'Divisible by 3'
    testNum = 7
    testLimit = testPrime
    while testLimit &gt;= testNum:
        if testPrime % testNum == 0:
           return 'Divisible by %d' % testNum
        testLimit = testPrime/testNum

        testNum = testNum + 2

    return '%d is prime!' % testPrime

def determineIsPrime2(testPrime):
    if testPrime % 2 == 0:
        return 'Divisible by 2'
    if testPrime % 3 == 0:
        return 'Divisible by 3'
    testNum = 5
    sqrt = math.sqrt(testPrime)
    while testNum &lt;= sqrt:
        if testPrime % testNum == 0:
           return 'Divisible by %d' % testNum

        testNum = testNum + 2

    return '%d is prime!' % testPrime

def determineIsPrime3(testPrime):
    if testPrime % 2 == 0:
        return 'Divisible by 2'
    if testPrime % 3 == 0:
        return 'Divisible by 3'
    testNum = 7
    sqrt = math.sqrt(testPrime)
    while ((6 * testNum) + 1 &lt;= sqrt) or ((6 * testNum) - 1 &lt;= sqrt):
        if testPrime % testNum == 0:
           return 'Divisible by %d' % testNum

        testNum = testNum + 2

    return '%d is prime!' % testPrime

startTime = time.time()
result = determineIsPrime(testValue)
endTime = time.time()

print result
print '1. Calculation took %f s\n' % (endTime - startTime)

startTime = time.time()
result = determineIsPrime2(testValue)
endTime = time.time()

print result
print '2. Calculation took %f s\n' % (endTime - startTime)

startTime = time.time()
result = determineIsPrime3(testValue)
endTime = time.time()

print result
print '3. Calculation took %f s\n' % (endTime - startTime)
</pre>
<p><strong>Results:</strong></p>
<pre class="brush: plain; title: ; notranslate">
Testing 99194853094755497...
99194853094755497 is prime!
1. Calculation took 202.609000 s

99194853094755497 is prime!
2. Calculation took 114.813000 s

99194853094755497 is prime!
3. Calculation took 28.781000 s
</pre>
]]></content:encoded>
			<wfw:commentRss>http://ericsilva.org/2009/12/14/primality-test-v2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Determining if a Number is Prime</title>
		<link>http://ericsilva.org/2009/12/10/determining-if-a-number-is-prime/</link>
		<comments>http://ericsilva.org/2009/12/10/determining-if-a-number-is-prime/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 12:09:55 +0000</pubDate>
		<dc:creator>Eric Silva</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Math]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[prime numbers]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://ericsilva.org/?p=353</guid>
		<description><![CDATA[While working on some caching settings, I had a need to know if a number is prime. I wrote this little Python script which will tell you if the number defined in the script is indeed a prime.]]></description>
			<content:encoded><![CDATA[<p>While working on some caching settings, I had a need to know if a number is prime.  I wrote this little Python script which will tell you if the number defined in the script is indeed a prime.</p>
<pre class="brush: python; gutter: true; title: ; toolbar: true; notranslate">
'''
Checks the specified value to determine if it is a prime number.
If it is not prime the divisor will be returned instead.

@author: Eric Silva
'''

#Change this value to whatever value you want to test for prime.
testValue = 3011

def determineIsPrime(testPrime):
    if testPrime % 2 == 0:
        return 'Divisible by 2'
    testNum = 3
    testLimit = testPrime
    while testLimit &gt;= testNum:
        if testPrime % testNum == 0:
           return 'Divisible by %d' % testNum
        testLimit = testPrime/testNum

        testNum = testNum + 2

    return '%d is prime!' % testPrime

result = determineIsPrime(testValue)

print result
</pre>
]]></content:encoded>
			<wfw:commentRss>http://ericsilva.org/2009/12/10/determining-if-a-number-is-prime/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Peer Code Review: An Agile Process</title>
		<link>http://ericsilva.org/2009/12/10/peer-code-review-an-agile-process/</link>
		<comments>http://ericsilva.org/2009/12/10/peer-code-review-an-agile-process/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 11:55:18 +0000</pubDate>
		<dc:creator>Eric Silva</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Observations]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Code Collaborator]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[Peer Code Review]]></category>
		<category><![CDATA[Smart Bear]]></category>

		<guid isPermaLink="false">http://ericsilva.org/2009/12/10/peer-code-review-an-agile-process/</guid>
		<description><![CDATA[Smart Bear Software recently released a white paper discussing the misconception that peer code review is a hindrance to Agile development methodologies.&#160; For anyone who regularly performs peer code reviews, would like to start performing them, or thinks they are an obstacle when it comes to Agile development should read this paper. The paper talks [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.smartbear.com" target="_blank">Smart Bear Software</a> recently released a <a href="http://smartbear.com/docs/Peer-Code-Review_An-Agile-Proces.pdf" target="_blank">white paper</a> discussing the misconception that peer code review is a hindrance to Agile development methodologies.&#160; For anyone who regularly performs peer code reviews, would like to start performing them, or thinks they are an obstacle when it comes to Agile development should read this paper.</p>
<p>The paper talks about the history of code review, how code review aligns with Agile, types of lightweight code review, and techniques to perform optimized code reviews.&#160; Some of the key statements that I took away from the paper are this:</p>
<ul>
<li><strong>Code review allows for “continuous attention to technical excellence and good design”.</strong>&#160; These enhances the agility of the code, the developers working on the code, and the overall Agile process.</li>
<li><strong>Code review “promotes sustainable development”.</strong>&#160; The “bus number” concept is one that I use consistently when promoting peer code review in my own workspace and corporate environment.&#160; The white paper explains it simply, “How many team members would have to get struck by a bus before no one was left that understood the code?&#160; If the bus number for a section of the code is less than two, then that’s a problem.”</li>
<li>The final take-away comes from the Agile Manifesto Principles itself, “The best architectures, requirements, and design emerge from self-organizing teams.”&#160; The same is true of quality peer code review; <strong>“If peer code review is mandated by someone outside the team, its chance of success decreases.&#160; If team members do not want code review to succeed, it <em>will</em> fail.”</strong></li>
</ul>
<ul>I use <a href="http://smartbear.com/codecollab.php" target="_blank">Code Collaborator</a>.&#160; I think it’s the best tool out there for performing peer code review, especially with distributed development teams.&#160; I think peer code review allows developers to become better developers through the visibility and social nature of performing the review itself.&#160; My opinions may be a bit biased, based upon my experiences with Smart Bear Software, but, in fairness, this white paper discusses the enormous benefits of peer code review without discussing specific products. It only discusses the principals and observed benefits, and is in no way a sales pitch to buy their product.</ul>
]]></content:encoded>
			<wfw:commentRss>http://ericsilva.org/2009/12/10/peer-code-review-an-agile-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GWT 2.0 Released!</title>
		<link>http://ericsilva.org/2009/12/09/gwt-2-0-released/</link>
		<comments>http://ericsilva.org/2009/12/09/gwt-2-0-released/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 12:56:53 +0000</pubDate>
		<dc:creator>Eric Silva</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://ericsilva.org/2009/12/09/gwt-2-0-released/</guid>
		<description><![CDATA[I just saw on my RSS that GWT 2.0 has been released.&#160; Gonna go play now. Bye.]]></description>
			<content:encoded><![CDATA[<p>I just saw on my RSS that GWT 2.0 <a href="http://googlewebtoolkit.blogspot.com/2009/12/introducing-google-web-toolkit-20-now.html" target="_blank">has been released</a>.&#160; Gonna go play now. Bye.</p>
]]></content:encoded>
			<wfw:commentRss>http://ericsilva.org/2009/12/09/gwt-2-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Converting a Visual Studio 2005 Web Application Project to a Visual Studio 2008 Web Application Project</title>
		<link>http://ericsilva.org/2009/12/06/converting-a-visual-studio-2005-web-application-project-to-a-visual-studio-2008-web-application-project/</link>
		<comments>http://ericsilva.org/2009/12/06/converting-a-visual-studio-2005-web-application-project-to-a-visual-studio-2008-web-application-project/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 16:24:00 +0000</pubDate>
		<dc:creator>Eric Silva</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Web Application]]></category>

		<guid isPermaLink="false">http://ericsilva.org/2009/12/06/converting-a-visual-studio-2005-web-application-project-to-a-visual-studio-2008-web-application-project/</guid>
		<description><![CDATA[For anyone looking to upgrade their VS 2005 Web Application project to VS 2008, I found good walkthrough provided by Microsoft here.]]></description>
			<content:encoded><![CDATA[<p>For anyone looking to upgrade their VS 2005 Web Application project to VS 2008, I found good walkthrough provided by Microsoft <a href="http://msdn.microsoft.com/en-us/library/bb907783.aspx" target="_blank">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ericsilva.org/2009/12/06/converting-a-visual-studio-2005-web-application-project-to-a-visual-studio-2008-web-application-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

