<?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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Jean-Paul S. Boodhoo's Blog</title>
    <link>http://blog.jpboodhoo.com/</link>
    <description>Develop With Passion</description>
    <language>en-us</language>
    <copyright>Jean-Paul S. Boodhoo</copyright>
    <lastBuildDate>Tue, 22 Sep 2009 23:03:00 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6276.0</generator>
    <managingEditor>jp@jpboodhoo.com</managingEditor>
    <webMaster>jp@jpboodhoo.com</webMaster>
    <creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><image><link>http://feeds.feedburner.com/JPBoodhoo</link><url>http://www.feedburner.com/fb/images/pub/fb_pwrd.gif</url><title>Jean-Paul S. Boodhoo's Blog</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/JPBoodhoo" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=537e6b06-948c-4561-9e2e-514cbaa8f973</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,537e6b06-948c-4561-9e2e-514cbaa8f973.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,537e6b06-948c-4561-9e2e-514cbaa8f973.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=537e6b06-948c-4561-9e2e-514cbaa8f973</wfw:commentRss>
      <slash:comments>2</slash:comments>
      
      <title>VMWare Fusion vs Parallels 4.0</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,537e6b06-948c-4561-9e2e-514cbaa8f973.aspx</guid>
      <link>http://feedproxy.google.com/~r/JPBoodhoo/~3/GveDH3lNC1I/VMWareFusionVsParallels40.aspx</link>
      <pubDate>Tue, 22 Sep 2009 23:03:00 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
A couple of weeks ago I installed a copy of &lt;a href="http://www.parallels.com/products/desktop/"&gt;Parallels&#xD;
Desktop&lt;/a&gt; for mac. The main driver at the time was that it would allow me to play&#xD;
typing of the dead!!I have been using it since the first week in August. I think parallels&#xD;
is a great product, but I just recently switched back to &lt;a href="http://www.vmware.com/products/fusion/"&gt;VMWare&#xD;
Fusion&lt;/a&gt; as it was a clear winner in performance (my perceived performance). Parallels&#xD;
also seems to be somewhat of a resource hog. When I first had it installed I installed&#xD;
Windows 7 on a vm allocated 2GB of memory (my MBP has 4GB). I was also running an&#xD;
Ubuntu VM on vmware fusion that serves as my git repository. After about 30 minutes&#xD;
of running the Windows 7VM the Ubuntu VM would error saying that it could not allocate&#xD;
enough memory to continue operation (keep in mind that this Ubuntu VM was only allocated&#xD;
256MB of RAM). &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
After switching back to VMWare fusion I can run both vm's quite happily and I am keeping&#xD;
the Windows 7 parallels vm kicking around so I can fire up typing of the dead every&#xD;
once in a while. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Develop With Passion!!&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blog.jpboodhoo.com/aggbug.ashx?id=537e6b06-948c-4561-9e2e-514cbaa8f973"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=GveDH3lNC1I:HW3fKjXA3YI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=GveDH3lNC1I:HW3fKjXA3YI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=GveDH3lNC1I:HW3fKjXA3YI:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=GveDH3lNC1I:HW3fKjXA3YI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JPBoodhoo/~4/GveDH3lNC1I" height="1" width="1"/&gt;</description>
      <comments>http://blog.jpboodhoo.com/CommentView,guid,537e6b06-948c-4561-9e2e-514cbaa8f973.aspx</comments>
      <category>Productivity;Tools</category>
    <feedburner:origLink>http://blog.jpboodhoo.com/VMWareFusionVsParallels40.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=66c6e5c7-f7ba-4cdc-9d49-196f982050e8</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,66c6e5c7-f7ba-4cdc-9d49-196f982050e8.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,66c6e5c7-f7ba-4cdc-9d49-196f982050e8.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=66c6e5c7-f7ba-4cdc-9d49-196f982050e8</wfw:commentRss>
      <slash:comments>3</slash:comments>
      
      <title>Are you playing in your arena?</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,66c6e5c7-f7ba-4cdc-9d49-196f982050e8.aspx</guid>
      <link>http://feedproxy.google.com/~r/JPBoodhoo/~3/d1cYO04SeMU/AreYouPlayingInYourArena.aspx</link>
      <pubDate>Fri, 18 Sep 2009 14:00:00 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Just re-reading an article in psychology today on the topic of &lt;a href="http://www.psychologytoday.com/articles/200810/confessions-late-bloomer"&gt;late&#xD;
bloomers&lt;/a&gt;. The entire article is amazing, if you have an opportunity to read the&#xD;
whole thing (here) I would strongly recommend it. Here is an excerpt that I find awesome&#xD;
(and close to home with respect to the message I try to share with people): &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;em&gt;&#xD;
          &lt;/em&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;em&gt;Finding Purpose &lt;/em&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;em&gt;"I made a decision that I wanted to be world class at something at a very&#xD;
young age; I just had to find that one thing that made me realize this is my arena,&#xD;
this is where I want to play," says Chris Gardner, founder and CEO of the stock&#xD;
brokerage Gardner Rich &amp;amp; Co. &lt;/em&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;em&gt;After a childhood of brutal abuse and an early adulthood as a single parent -&#xD;
homeless and destitute - Gardner eventually found that arena. Seeing a red Ferrari&#xD;
pull into a parking lot, he approached the driver and asked him,"What do you&#xD;
do and how do you do it?" The answer, investment banking, turned out to be a&#xD;
perfect match for the math and people skills Gardner already had. &lt;/em&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;em&gt;"This encounter would crystallize in my memory - almost into a mythological&#xD;
moment that I could return to and visit in the present tense whenever I wanted or&#xD;
needed its message," Gardner says in his autobiography, The Pursuit of Happiness." &lt;/em&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;em&gt;Many highly creative people mention "a moment, an encounter, a book that&#xD;
they read, a performance that they attended, that spoke to them and led them to say,&#xD;
'This is the real me, this is what I would like to do, to devote my life to, going&#xD;
forward," says Harvard professor Howard Gardner (no relation to Chris). &lt;/em&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;em&gt;Passion burns so brightly, it's clear when one has it. As Chris Gardner puts it,&#xD;
"Passion is the thing that won't let you sleep at night because you want to get&#xD;
up in the morning and go do your thing." By itself it can fuel greatness. "If&#xD;
you're passionate about something, you can develop the abilities," says Gardner.&#xD;
"It can't be taught, it can't be bought. You can't go to Yale and say you want&#xD;
to major in passion. You have to bring it with you."&lt;/em&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Develop With Passion!!!&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blog.jpboodhoo.com/aggbug.ashx?id=66c6e5c7-f7ba-4cdc-9d49-196f982050e8"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=d1cYO04SeMU:FAcGqcyq6Ww:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=d1cYO04SeMU:FAcGqcyq6Ww:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=d1cYO04SeMU:FAcGqcyq6Ww:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=d1cYO04SeMU:FAcGqcyq6Ww:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JPBoodhoo/~4/d1cYO04SeMU" height="1" width="1"/&gt;</description>
      <comments>http://blog.jpboodhoo.com/CommentView,guid,66c6e5c7-f7ba-4cdc-9d49-196f982050e8.aspx</comments>
      <category>Inspiration</category>
    <feedburner:origLink>http://blog.jpboodhoo.com/AreYouPlayingInYourArena.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=b53fe6eb-3c77-4ab9-9053-a2afdacb807d</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,b53fe6eb-3c77-4ab9-9053-a2afdacb807d.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,b53fe6eb-3c77-4ab9-9053-a2afdacb807d.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=b53fe6eb-3c77-4ab9-9053-a2afdacb807d</wfw:commentRss>
      
      <title>In case you've been trying to contact me!!</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,b53fe6eb-3c77-4ab9-9053-a2afdacb807d.aspx</guid>
      <link>http://feedproxy.google.com/~r/JPBoodhoo/~3/qUyZP23ITnw/InCaseYouveBeenTryingToContactMe.aspx</link>
      <pubDate>Fri, 11 Sep 2009 03:59:00 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
This is just a quick post to let anyone who has been trying to contact me through&#xD;
my skype account know that, the reason you have not been able to get through is because&#xD;
my skype out number was inactivated a couple of months ago. I just reactivated it!!&#xD;
Guess I should check on things like that a bit more frequently!! &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://www.developwithpassion.com"&gt;Develop With Passion&lt;/a&gt;!!&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blog.jpboodhoo.com/aggbug.ashx?id=b53fe6eb-3c77-4ab9-9053-a2afdacb807d"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=qUyZP23ITnw:O29z_Lqi650:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=qUyZP23ITnw:O29z_Lqi650:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=qUyZP23ITnw:O29z_Lqi650:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=qUyZP23ITnw:O29z_Lqi650:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JPBoodhoo/~4/qUyZP23ITnw" height="1" width="1"/&gt;</description>
      <comments>http://blog.jpboodhoo.com/CommentView,guid,b53fe6eb-3c77-4ab9-9053-a2afdacb807d.aspx</comments>
      <category>General</category>
    <feedburner:origLink>http://blog.jpboodhoo.com/InCaseYouveBeenTryingToContactMe.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=add351a3-2c15-4e3b-80e1-bd6f6ae0a67d</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,add351a3-2c15-4e3b-80e1-bd6f6ae0a67d.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,add351a3-2c15-4e3b-80e1-bd6f6ae0a67d.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=add351a3-2c15-4e3b-80e1-bd6f6ae0a67d</wfw:commentRss>
      <slash:comments>10</slash:comments>
      
      <title>Why do I develop with passion!!</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,add351a3-2c15-4e3b-80e1-bd6f6ae0a67d.aspx</guid>
      <link>http://feedproxy.google.com/~r/JPBoodhoo/~3/1FjwlJnFEK8/WhyDoIDevelopWithPassion.aspx</link>
      <pubDate>Fri, 11 Sep 2009 01:50:00 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
(this should have been posted a couple of days ago!!)&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
It is 6:45AM on a Saturday morning. Having not yet went to bed from completing another&#xD;
course, instead of going to sleep immediately I am blasting this down as I feel that&#xD;
someone out there needs to read this post . One of the many comments that I often&#xD;
receive from students of the courses is that they can't believe how passionate I am&#xD;
about writing software. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I often go into long rants about how I look back at the code I wrote years ago and&#xD;
,even though it can make me shudder, I still smile with joy when I think about the&#xD;
experience I had while I was writing the software. I will talk on and on about the&#xD;
importance of being focused, dreaming big, living passionately. Of course there is&#xD;
some technical in there! &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
(!!!!!IMPORTANT - The following comments are not meant to come off as advertising,&#xD;
whether good or bad!!) &#xD;
&lt;br&gt;&#xD;
Some comments that often come up during courses are: &#xD;
&lt;br&gt;&#xD;
-How did you get so good &#xD;
&lt;br&gt;&#xD;
-Man you are fast &#xD;
&lt;br&gt;&#xD;
-I can't keep up &#xD;
&lt;br&gt;&#xD;
-I have no idea what I am doing &#xD;
&lt;br&gt;&#xD;
-You have not given me enough direction to complete the exercise &#xD;
&lt;br&gt;&#xD;
-Could you please stop changing the requirements part way through an exercise &#xD;
&lt;br&gt;&#xD;
-You're presentation style sucks &#xD;
&lt;br&gt;&#xD;
-You don't cater to different styles of learning very well &#xD;
&lt;br&gt;&#xD;
-I have no idea what you are talking about anymore&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I have cut the list short because the list goes on and on and on. I listed both good&#xD;
and bad feedback above to highlight one important topic. Regardless of a students&#xD;
experience with the course there is no student who, having taken the course, is not&#xD;
able to say the following things: &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
-He seems to love what he does? &#xD;
&lt;br&gt;&#xD;
-He seems to not be caught up in the mainstream? &#xD;
&lt;br&gt;&#xD;
-He does not seem to be worried about trying to keep up with everyone else? &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
So is it a matter of focus? Partially? Am I driven? Somewhat? &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Then what is the big deal??? &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Long ago I gave up the driver seat of my life to someone who knows way may about things&#xD;
than I ever could. I feel passionate about what I do because a long time ago, someone&#xD;
who demonstrated passion for something else, their love for the Lord, was something&#xD;
that changed my life. My wife was one of those people in high school who would walk&#xD;
up to a complete stranger and ask them the question: Are you saved? Do you know Jesus?&#xD;
This was one of the first questions she asked me having just met me. I was intrigued.&#xD;
Having grown up going to church, I was stumped at the question as I did not have any&#xD;
idea what it meant to have a relationship with the Lord. Aaron and I did not end up&#xD;
dating until the beginning of grade 12. Having witnessed the life of someone living&#xD;
out loud, and not being afraid, or even caught up in the popularity traps that can&#xD;
often snare people going through high school; I decided to give my life to the Lord,&#xD;
and things began to significantly change, I began to change!! I was not in a broken&#xD;
place when I found the Lord, I just knew that I needed Him in my life. The moment&#xD;
that I decided to follow Jesus, I started to change, and my perception of things began&#xD;
to alter as I drew closer to Him. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
People often realize that the &lt;a href="http://www.jpboodhoo.com/training.oo"&gt;Nothin&#xD;
but .Net&lt;/a&gt; courses end up being much more than just about technology. Lots of people&#xD;
end up feeling empowered, energized (despite the long days), and having a renewed&#xD;
sense of purpose for both their development careers and lives in general. Of course,&#xD;
this is not the way everyone feels, but the important thing to realize is that none&#xD;
of it has anything to do with me at all. My family and I believe that God is using&#xD;
this course as a way to wake people up to the possibilities of what it means to have&#xD;
a rich life in Him; one that is not:&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
caught up in the meaningless comparison traps that bring us no satisfaction whatsoever.&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
driven by desires that do not end up in delivering any meaningful fruit, or leave&#xD;
us with any feeling of accomplishment/peace&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
tossed side to side by the crazy events that can happen in our lives&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
filled with uncertainty about what happens next?&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
The amount of great opportunities we have had to share the Lord with developers all&#xD;
over the world is amazing, and is the central reason that I believe the course is&#xD;
still going strong. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I Develop With Passion, because I am filled by the One that gives me an unshakable&#xD;
hope for an amazing future, that is promised to all who accept Him into their life!!&#xD;
Even if things in life don't go the way that we would like, there is an unbelievable,&#xD;
incredible, future that awaits all who give up the drivers seat to the One who really&#xD;
knows how to point us in the ultimate right direction!! I Develop With Passion because&#xD;
I want people to ask the question why? So I can point them directly at The answer.&#xD;
It has nothing to do with me whatsoever. I am nothing special.  Jesus is everything.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
If you want to read more about what it means to have a relationship with Jesus I suggest&#xD;
you take a look at a fantastic resource: &lt;a href="http://www.notreligion.com"&gt;notreligion.com&lt;/a&gt; .&#xD;
If you have even the vaguest question, please take the time to read through the site.&#xD;
It could be the most important decision you make!!&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://www.developwithpassion.com"&gt;Develop With Passion&lt;/a&gt;!!&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blog.jpboodhoo.com/aggbug.ashx?id=add351a3-2c15-4e3b-80e1-bd6f6ae0a67d"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=1FjwlJnFEK8:NIpuVbQK3jg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=1FjwlJnFEK8:NIpuVbQK3jg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=1FjwlJnFEK8:NIpuVbQK3jg:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=1FjwlJnFEK8:NIpuVbQK3jg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JPBoodhoo/~4/1FjwlJnFEK8" height="1" width="1"/&gt;</description>
      <comments>http://blog.jpboodhoo.com/CommentView,guid,add351a3-2c15-4e3b-80e1-bd6f6ae0a67d.aspx</comments>
      <category>Faith;Inspiration</category>
    <feedburner:origLink>http://blog.jpboodhoo.com/WhyDoIDevelopWithPassion.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=49412c10-311c-477c-a535-b9b448163e1f</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,49412c10-311c-477c-a535-b9b448163e1f.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,49412c10-311c-477c-a535-b9b448163e1f.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=49412c10-311c-477c-a535-b9b448163e1f</wfw:commentRss>
      <slash:comments>2</slash:comments>
      
      <title>Expanding template files in Ruby (for builds)</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,49412c10-311c-477c-a535-b9b448163e1f.aspx</guid>
      <link>http://feedproxy.google.com/~r/JPBoodhoo/~3/ymPVZa8OuEA/ExpandingTemplateFilesInRubyForBuilds.aspx</link>
      <pubDate>Wed, 09 Sep 2009 09:44:00 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
When doing builds with Ruby and Rake, one of the things I often like to be able to&#xD;
do is expanding a set of template files to a set of corresponding files with the appropriate&#xD;
tokenized settings replaced. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Here is an example of a tokenized app.config file (only the important section of the&#xD;
file has been included for brevity): &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
&amp;lt;connectionStrings&amp;gt; &#xD;
&lt;br&gt;&#xD;
  &amp;lt;add name="App" &#xD;
&lt;br&gt;&#xD;
     connectionString="@config_connectionstring@" &#xD;
&lt;br&gt;&#xD;
     providerName="System.Data.SqlClient"/&amp;gt; &#xD;
&lt;br&gt;&#xD;
&amp;lt;/connectionStrings&amp;gt; &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Notice that the only interesting thing to look at here is the @config_connectionstring@&#xD;
value. This is a value that should be swapped out during the build process with settings&#xD;
specific to the machine the build is taking place on. The place where these settings&#xD;
are defined is in a build specific file named local_properties.rb. Here is a small&#xD;
section of one these files: &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
require "project.rb" &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
class LocalSettings &#xD;
&lt;br&gt;&#xD;
  attr_reader :settings &#xD;
&lt;br&gt;&#xD;
def initialize &#xD;
&lt;br&gt;&#xD;
  @settings = { &#xD;
&lt;br&gt;&#xD;
      :app_config_template =&amp;gt; "app.config.xp.template"&#xD;
, &#xD;
&lt;br&gt;&#xD;
    #app_config_template = "app.config.vista.template" ; &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
      :osql_connectionstring =&amp;gt; "-E", &#xD;
&lt;br&gt;&#xD;
      :path_to_runtime_log4net_config =&amp;gt; "artifacts\log4net.config.xml", &#xD;
&lt;br&gt;&#xD;
      :initial_catalog =&amp;gt; "#{Project.name}", &#xD;
&lt;br&gt;&#xD;
      :database_provider =&amp;gt; "System.Data.SqlClient"&#xD;
, &#xD;
&lt;br&gt;&#xD;
      :database_path =&amp;gt; "C:\\databases" &#xD;
&lt;br&gt;&#xD;
} &#xD;
&lt;br&gt;&#xD;
@settings[:config_connectionstring] = "data source=(local);Integrated Security=SSPI;Initial&#xD;
Catalog=#{@settings[:initial_catalog]}" &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Notice that the goal of this class is to just define a dictionary. These settings&#xD;
indicate values that will be used specific to each machine that is performing a build&#xD;
(which means each machine potentially gets its own different set of settings. To take&#xD;
a file and have it expand out into a file with all the tokens replaced, I wrote a&#xD;
quick ruby class named TemplateFile that looks like the following: &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
class TemplateFile &#xD;
&lt;br&gt;&#xD;
  attr_reader :template_file_name &#xD;
&lt;br&gt;&#xD;
  attr_reader :output_file_name &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
  def initialize(template_file_name) &#xD;
&lt;br&gt;&#xD;
    @template_file_name = template_file_name &#xD;
&lt;br&gt;&#xD;
    @output_file_name = template_file_name.gsub('.template','') &#xD;
&lt;br&gt;&#xD;
  end &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
  def generate(settings_dictionary) &#xD;
&lt;br&gt;&#xD;
    generate_to(@output_file_name,settings_dictionary) &#xD;
&lt;br&gt;&#xD;
  end &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
  def generate_to_directory(output_directory,settings_dictionary) &#xD;
&lt;br&gt;&#xD;
    generate_to(File.join(output_directory,File.basename(@output_file_name)),settings_dictionary) &#xD;
&lt;br&gt;&#xD;
  end &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
  def generate_to_directories(output_directories,settings_dictionary) &#xD;
&lt;br&gt;&#xD;
    output_directories.each do |directory| &#xD;
&lt;br&gt;&#xD;
      generate_to_directory(directory,settings_dictionary) &#xD;
&lt;br&gt;&#xD;
    end &#xD;
&lt;br&gt;&#xD;
  end &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
  def generate_to(output_file,settings_dictionary) &#xD;
&lt;br&gt;&#xD;
     File.delete?(output_file) &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
     File.open_for_write(output_file) do|generated_file| &#xD;
&lt;br&gt;&#xD;
       File.open_for_read(@template_file_name) do|template_line| &#xD;
&lt;br&gt;&#xD;
         settings_dictionary.each_key do|key| &#xD;
&lt;br&gt;&#xD;
           template_line = template_line.gsub("@#{key}@","#{settings_dictionary[key]}") &#xD;
&lt;br&gt;&#xD;
         end &#xD;
&lt;br&gt;&#xD;
         generated_file.puts(template_line) &#xD;
&lt;br&gt;&#xD;
       end &#xD;
&lt;br&gt;&#xD;
     end &#xD;
&lt;br&gt;&#xD;
  end &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
  def to_s() &#xD;
&lt;br&gt;&#xD;
    "Template File- Template:#{@template_file_name} : Output:#{@output_file_name}" &#xD;
&lt;br&gt;&#xD;
  end &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
end &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The goal of this class is to just take a named template file and generate it out to&#xD;
one or more locations while making the variable substitution from a provided dictionary&#xD;
of settings. All of these things come together during the build process as follows: &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
template_files = TemplateFileList.new('**/*.template') &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
desc 'expands all of the template files in the project' &#xD;
&lt;br&gt;&#xD;
task :expand_all_template_files do &#xD;
&lt;br&gt;&#xD;
  template_files.generate_all_output_files(local_settings.settings) &#xD;
&lt;br&gt;&#xD;
end &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
All of the template files in the project are grabbed into an array and the expansion&#xD;
happens during the generate_all_output_files method. For special files you can also&#xD;
create a TemplateFile to specifically point at that file and generate it to multiple&#xD;
locations: &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
#configuration files &#xD;
&lt;br&gt;&#xD;
config_files = FileList.new(File.join('product','config','*.template')).select{|fn|&#xD;
! fn.include?('app.config')} &#xD;
&lt;br&gt;&#xD;
app_config = TemplateFile.new(File.join('product','config',local_settings[:app_config_template])) &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
task :from_ide do &#xD;
&lt;br&gt;&#xD;
  app_config.generate_to(File.join(project_startup_dir,"#{Project.startup_config}"),local_settings.settings) &#xD;
&lt;br&gt;&#xD;
  app_config.generate_to(File.join(project_test_dir,"#{Project.tests_dir}.dll.config"),local_settings.settings) &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
  config_files.each do |file| &#xD;
&lt;br&gt;&#xD;
    TemplateFile.new(file).generate_to_directories([project_startup_dir,project_test_dir],local_settings.settings) &#xD;
&lt;br&gt;&#xD;
  end &#xD;
&lt;br&gt;&#xD;
end &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
This makes it a snap to add new project specific configuration files as long as I&#xD;
follow a convention that all new "config" files go into the product/config&#xD;
folder (a build specific folder) with a .[extension].template extension. This way,&#xD;
the new file will get picked up without issue and can have tokenized values in the&#xD;
file easily replaced with machine specific settings. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Develop With Passion&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blog.jpboodhoo.com/aggbug.ashx?id=49412c10-311c-477c-a535-b9b448163e1f"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=ymPVZa8OuEA:NwypqdMVtl4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=ymPVZa8OuEA:NwypqdMVtl4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=ymPVZa8OuEA:NwypqdMVtl4:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=ymPVZa8OuEA:NwypqdMVtl4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JPBoodhoo/~4/ymPVZa8OuEA" height="1" width="1"/&gt;</description>
      <comments>http://blog.jpboodhoo.com/CommentView,guid,49412c10-311c-477c-a535-b9b448163e1f.aspx</comments>
      <category>Productivity</category>
    <feedburner:origLink>http://blog.jpboodhoo.com/ExpandingTemplateFilesInRubyForBuilds.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=109cb95b-fb42-4752-b1d4-0a2b8d933aef</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,109cb95b-fb42-4752-b1d4-0a2b8d933aef.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,109cb95b-fb42-4752-b1d4-0a2b8d933aef.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=109cb95b-fb42-4752-b1d4-0a2b8d933aef</wfw:commentRss>
      <slash:comments>4</slash:comments>
      
      <title>Typershark &amp;ndash; Improve you typing in just minutes a day</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,109cb95b-fb42-4752-b1d4-0a2b8d933aef.aspx</guid>
      <link>http://feedproxy.google.com/~r/JPBoodhoo/~3/Dfj9CwNdS2Q/TypersharkNdashImproveYouTypingInJustMinutesADay.aspx</link>
      <pubDate>Wed, 29 Jul 2009 21:00:00 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
As an excuse to play around with a modified audio/visual setup, I thought I would&#xD;
kill two birds with one stone and do a quick screencast on improving your keyboarding&#xD;
skills over time using the game &lt;a href="http://www.popcap.com/games/free/typershark"&gt;TyperShark&lt;/a&gt;. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
This screencast gives a brief overview of the game and a sample playthrough of one&#xD;
level. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The screencast can be found &lt;a href="http://www.jpboodhoo.com/content/screencasts/2009/july/july_27_typer_shark.mov"&gt;here&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
If you enjoy the video/sound quality let me know as I am planning to do a lot more&#xD;
in the forseeable future. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://www.developwithpassion.com"&gt;Develop With Passion&lt;/a&gt;!!&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blog.jpboodhoo.com/aggbug.ashx?id=109cb95b-fb42-4752-b1d4-0a2b8d933aef"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=Dfj9CwNdS2Q:ea-cPtmI7Us:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=Dfj9CwNdS2Q:ea-cPtmI7Us:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=Dfj9CwNdS2Q:ea-cPtmI7Us:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=Dfj9CwNdS2Q:ea-cPtmI7Us:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JPBoodhoo/~4/Dfj9CwNdS2Q" height="1" width="1"/&gt;</description>
      <comments>http://blog.jpboodhoo.com/CommentView,guid,109cb95b-fb42-4752-b1d4-0a2b8d933aef.aspx</comments>
      <category>Productivity;ScreenCasts</category>
    <feedburner:origLink>http://blog.jpboodhoo.com/TypersharkNdashImproveYouTypingInJustMinutesADay.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=75286cfa-b380-4cc3-8308-b71d4ef1e2e4</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,75286cfa-b380-4cc3-8308-b71d4ef1e2e4.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,75286cfa-b380-4cc3-8308-b71d4ef1e2e4.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=75286cfa-b380-4cc3-8308-b71d4ef1e2e4</wfw:commentRss>
      <slash:comments>3</slash:comments>
      
      <title>Closing an anonymous method to a known delegate type</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,75286cfa-b380-4cc3-8308-b71d4ef1e2e4.aspx</guid>
      <link>http://feedproxy.google.com/~r/JPBoodhoo/~3/BmloNJMl9a4/ClosingAnAnonymousMethodToAKnownDelegateType.aspx</link>
      <pubDate>Tue, 28 Jul 2009 21:00:00 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
If you are using extension methods as a way to achieve more language oriented programming,&#xD;
there are lots of times you will want to be able to run extension methods against&#xD;
an anonymous method, but you will first have to close it to a well known delegate&#xD;
type before it is allowed. Here is a useful method if you want the starting point&#xD;
to be an anonymous method created on the fly:&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-family: consolas; background: black; color: white; font-size: 14pt"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
    &lt;span style="color: #ff8000"&gt;public&lt;/span&gt;&lt;span style="color: #ff8000"&gt;class&lt;/span&gt;&lt;span style="color: yellow"&gt;CreateDelegate&lt;/span&gt;&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
    {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
       &lt;span style="color: #ff8000"&gt;public&lt;/span&gt;&lt;span style="color: #ff8000"&gt;static&lt;/span&gt; DelegateType&#xD;
of&amp;lt;DelegateType&amp;gt;(DelegateType body) {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
           &lt;span style="color: #ff8000"&gt;return&lt;/span&gt; body;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
       } &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
    }&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://www.developwithpassion.com"&gt;Develop With Passion&lt;/a&gt;!&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blog.jpboodhoo.com/aggbug.ashx?id=75286cfa-b380-4cc3-8308-b71d4ef1e2e4"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=BmloNJMl9a4:I9NX2uVLpDc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=BmloNJMl9a4:I9NX2uVLpDc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=BmloNJMl9a4:I9NX2uVLpDc:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=BmloNJMl9a4:I9NX2uVLpDc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JPBoodhoo/~4/BmloNJMl9a4" height="1" width="1"/&gt;</description>
      <comments>http://blog.jpboodhoo.com/CommentView,guid,75286cfa-b380-4cc3-8308-b71d4ef1e2e4.aspx</comments>
      <category>C Sharp</category>
    <feedburner:origLink>http://blog.jpboodhoo.com/ClosingAnAnonymousMethodToAKnownDelegateType.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=62f24b31-6639-4ffe-bb00-13a24b3df9e7</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,62f24b31-6639-4ffe-bb00-13a24b3df9e7.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,62f24b31-6639-4ffe-bb00-13a24b3df9e7.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=62f24b31-6639-4ffe-bb00-13a24b3df9e7</wfw:commentRss>
      <slash:comments>14</slash:comments>
      
      <title>Combining two disparate collections</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,62f24b31-6639-4ffe-bb00-13a24b3df9e7.aspx</guid>
      <link>http://feedproxy.google.com/~r/JPBoodhoo/~3/mjbFgQNbZ0w/CombiningTwoDisparateCollections.aspx</link>
      <pubDate>Mon, 27 Jul 2009 20:40:00 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
During class last week someone had written a piece of code right near the end of the&#xD;
last evening and I committed to showing them a potential refactoring that could be&#xD;
used. Here is the piece of code in question: &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-family: consolas; background: black; color: white; font-size: 14pt"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: #ff8000"&gt;var&lt;/span&gt; info_list&#xD;
= &lt;span style="color: #ff8000"&gt;new&lt;/span&gt;&lt;span style="color: yellow"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: yellow"&gt;ResolverConfigurationInfo&lt;/span&gt;&amp;gt;(parser());&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: #ff8000"&gt;var&lt;/span&gt; resolver_items&#xD;
= info_list.Select(x =&amp;gt; factory(x)).ToList();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: #ff8000"&gt;var&lt;/span&gt; index&#xD;
= 0;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            parser().each(item&#xD;
=&amp;gt;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
               &#xD;
resolvers.Add(item.AbstractType, resolver_items[index]);&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
               &#xD;
index++;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            });&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
The code is not really complicated. The messiness comes from the fact that an index&#xD;
needs to be maintained so that it can be used to lookup into another equally sized&#xD;
collection that is not the target of the iteration. There are obviously lots of ways&#xD;
to solve this, but I thought "why not just flatten the two collections into a&#xD;
single collection which eliminates the need for the index. Here is the resulting code&#xD;
that was produced: &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-family: consolas; background: black; color: white; font-size: 14pt"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: #ff8000"&gt;var&lt;/span&gt; info_list&#xD;
= &lt;span style="color: #ff8000"&gt;new&lt;/span&gt;&lt;span style="color: yellow"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: yellow"&gt;ResolverConfigurationInfo&lt;/span&gt;&amp;gt;(parser());&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: #ff8000"&gt;var&lt;/span&gt; resolver_items&#xD;
= info_list.Select(x =&amp;gt; factory(x)).ToList();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            info_list.union(resolver_items).each(item&#xD;
=&amp;gt; resolvers.Add(item.first_value.AbstractType, item.second_value));&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
The union method is a new extension method that will take 2 disparate collections&#xD;
of the same size and combine them into a singular collection of Tuple&amp;lt;T,U&amp;gt; types.&#xD;
I created a simple Tuple class as nothing more than as an immutable parameter object.&#xD;
Here is the resulting code for it (very simple): &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-family: consolas; background: black; color: white; font-size: 14pt"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
    &lt;span style="color: #ff8000"&gt;public&lt;/span&gt;&lt;span style="color: #ff8000"&gt;class&lt;/span&gt;&lt;span style="color: yellow"&gt;Tuple&lt;/span&gt;&amp;lt;FirstType,&#xD;
SecondType&amp;gt;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
    {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: #ff8000"&gt;public&lt;/span&gt; FirstType&#xD;
first_value { &lt;span style="color: #ff8000"&gt;get&lt;/span&gt;; &lt;span style="color: #ff8000"&gt;private&lt;/span&gt;&lt;span style="color: #ff8000"&gt;set&lt;/span&gt;;&#xD;
}&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: #ff8000"&gt;public&lt;/span&gt; SecondType&#xD;
second_value { &lt;span style="color: #ff8000"&gt;get&lt;/span&gt;; &lt;span style="color: #ff8000"&gt;private&lt;/span&gt;&lt;span style="color: #ff8000"&gt;set&lt;/span&gt;;&#xD;
}&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: #ff8000"&gt;public&lt;/span&gt; Tuple(FirstType&#xD;
first, SecondType second_type)&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: #ff8000"&gt;this&lt;/span&gt;.first_value&#xD;
= first;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: #ff8000"&gt;this&lt;/span&gt;.second_value&#xD;
= second_type;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        }&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
    }&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
Finally the code that pulls it all together is here in the extension method that does&#xD;
the heavy lifting: &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-family: consolas; background: black; color: white; font-size: 14pt"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: #ff8000"&gt;static&lt;/span&gt;&lt;span style="color: #ff8000"&gt;public&lt;/span&gt;&lt;span style="color: #2b91af"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color: yellow"&gt;Tuple&lt;/span&gt;&amp;lt;FirstType,&#xD;
SecondType&amp;gt;&amp;gt; union&amp;lt;FirstType, SecondType&amp;gt;(&lt;span style="color: #ff8000"&gt;this&lt;/span&gt;&lt;span style="color: #2b91af"&gt;IEnumerable&lt;/span&gt;&amp;lt;FirstType&amp;gt;&#xD;
first_set,&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
                                                                                             &lt;span style="color: #2b91af"&gt;IEnumerable&lt;/span&gt;&amp;lt;SecondType&amp;gt;&#xD;
second_set)&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: yellow"&gt;Check&lt;/span&gt;.not_null(first_set,second_set);&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: #ff8000"&gt;var&lt;/span&gt; first_list&#xD;
= first_set.ToList();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: #ff8000"&gt;var&lt;/span&gt; second_list&#xD;
= second_set.ToList();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: yellow"&gt;Check&lt;/span&gt;.ensure(first_list.Count&#xD;
== second_list.Count);&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: #ff8000"&gt;for&lt;/span&gt; (&lt;span style="color: #ff8000"&gt;var&lt;/span&gt; index&#xD;
= 0; index &amp;lt; first_list.Count; index++) &lt;span style="color: #ff8000"&gt;yield&lt;/span&gt;&lt;span style="color: #ff8000"&gt;return&lt;/span&gt;&lt;span style="color: #ff8000"&gt;new&lt;/span&gt;&lt;span style="color: yellow"&gt;Tuple&lt;/span&gt;&amp;lt;FirstType,&#xD;
SecondType&amp;gt;(first_list[index], second_list[index]);&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        }&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
This method hides the details of the indexer into a utility method that can be used&#xD;
anywhere where 2 sets of disparate items of the same length need to be combined into&#xD;
a singular set.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Thoughts? &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Develop With Passion!!&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blog.jpboodhoo.com/aggbug.ashx?id=62f24b31-6639-4ffe-bb00-13a24b3df9e7"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=mjbFgQNbZ0w:dRPuh1f8dxU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=mjbFgQNbZ0w:dRPuh1f8dxU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=mjbFgQNbZ0w:dRPuh1f8dxU:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=mjbFgQNbZ0w:dRPuh1f8dxU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JPBoodhoo/~4/mjbFgQNbZ0w" height="1" width="1"/&gt;</description>
      <comments>http://blog.jpboodhoo.com/CommentView,guid,62f24b31-6639-4ffe-bb00-13a24b3df9e7.aspx</comments>
      <category>C Sharp;Programming</category>
    <feedburner:origLink>http://blog.jpboodhoo.com/CombiningTwoDisparateCollections.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=5b22051d-8a2f-48d4-8e00-a01a3be7e4f5</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,5b22051d-8a2f-48d4-8e00-a01a3be7e4f5.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,5b22051d-8a2f-48d4-8e00-a01a3be7e4f5.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=5b22051d-8a2f-48d4-8e00-a01a3be7e4f5</wfw:commentRss>
      
      <title>Nothin but .Net London &amp;ndash; 2009 Wrap-Up</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,5b22051d-8a2f-48d4-8e00-a01a3be7e4f5.aspx</guid>
      <link>http://feedproxy.google.com/~r/JPBoodhoo/~3/Pein6oJZQTw/NothinButNetLondonNdash2009WrapUp.aspx</link>
      <pubDate>Sun, 26 Jul 2009 04:31:00 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Just got back from another amazing course in London, England. The class was great.&#xD;
As always I think I learned just as much from the students as I was able to impart&#xD;
to them. There were 15 of us in total, and with each successive course I am trying&#xD;
to find a way to get the students engaging in as much practical lab exercises as possible.&#xD;
There came a point where people felt that it may have been too much lab exercise and&#xD;
that they were not getting enough guidance. This feedback allowed me to make some&#xD;
adjustments. On day 4 and 5 the feedback from the auto correcting seemed to register&#xD;
well with people. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I would like to take this time to thank my London class for the honor of being able&#xD;
to share that instance week of training  them. I look forward to seeing what&#xD;
the future holds in store for all of you!! &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
God Bless You, &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
JP&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blog.jpboodhoo.com/aggbug.ashx?id=5b22051d-8a2f-48d4-8e00-a01a3be7e4f5"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=Pein6oJZQTw:8DrVmSZNnp0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=Pein6oJZQTw:8DrVmSZNnp0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=Pein6oJZQTw:8DrVmSZNnp0:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=Pein6oJZQTw:8DrVmSZNnp0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JPBoodhoo/~4/Pein6oJZQTw" height="1" width="1"/&gt;</description>
      <comments>http://blog.jpboodhoo.com/CommentView,guid,5b22051d-8a2f-48d4-8e00-a01a3be7e4f5.aspx</comments>
      <category>Training</category>
    <feedburner:origLink>http://blog.jpboodhoo.com/NothinButNetLondonNdash2009WrapUp.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=4a92ecb4-40ee-421a-a44b-363de0374682</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,4a92ecb4-40ee-421a-a44b-363de0374682.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,4a92ecb4-40ee-421a-a44b-363de0374682.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=4a92ecb4-40ee-421a-a44b-363de0374682</wfw:commentRss>
      
      <title>Van Presentation on Wednesday 15th July &amp;ndash; Developer Productivity</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,4a92ecb4-40ee-421a-a44b-363de0374682.aspx</guid>
      <link>http://feedproxy.google.com/~r/JPBoodhoo/~3/XPdJiAM9AGA/VanPresentationOnWednesday15thJulyNdashDeveloperProductivity.aspx</link>
      <pubDate>Tue, 14 Jul 2009 02:00:00 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
The folks at &lt;a href="http://virualaltnet.blogspot.com/2009/07/van-jean-paul-sylvain-boodhoo-in-town_12.html"&gt;VAN&lt;/a&gt; were&#xD;
kind enough to give me the opportunity to speak on the topic of developer productivity.&#xD;
We are going to attempt to discuss factors that can prevent us from achieving betters&#xD;
levels of productivity in our workplace. Of course, I am sure there are going to be&#xD;
other topics that come up!! &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
If you have time and are able to make it it would be great to have you join in on&#xD;
the conversation: &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Start Time: Wed, July 15, 2009 8:00 PM UTC/GMT -5 hours &#xD;
&lt;br&gt;&#xD;
End Time: Wed, July 15, 2009 10:00 PM UTC/GMT -5 hours &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Develop With Passion!!&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blog.jpboodhoo.com/aggbug.ashx?id=4a92ecb4-40ee-421a-a44b-363de0374682"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=XPdJiAM9AGA:XuKtsm0rzcQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=XPdJiAM9AGA:XuKtsm0rzcQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=XPdJiAM9AGA:XuKtsm0rzcQ:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=XPdJiAM9AGA:XuKtsm0rzcQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JPBoodhoo/~4/XPdJiAM9AGA" height="1" width="1"/&gt;</description>
      <comments>http://blog.jpboodhoo.com/CommentView,guid,4a92ecb4-40ee-421a-a44b-363de0374682.aspx</comments>
      <category>Presentations</category>
    <feedburner:origLink>http://blog.jpboodhoo.com/VanPresentationOnWednesday15thJulyNdashDeveloperProductivity.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=703015c0-1b75-47cb-a562-d2fbebc28307</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,703015c0-1b75-47cb-a562-d2fbebc28307.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,703015c0-1b75-47cb-a562-d2fbebc28307.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=703015c0-1b75-47cb-a562-d2fbebc28307</wfw:commentRss>
      <slash:comments>6</slash:comments>
      
      <title>Avoid the trap of perfectionism</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,703015c0-1b75-47cb-a562-d2fbebc28307.aspx</guid>
      <link>http://feedproxy.google.com/~r/JPBoodhoo/~3/diOvUF8II_4/AvoidTheTrapOfPerfectionism.aspx</link>
      <pubDate>Thu, 09 Jul 2009 22:00:00 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
I am just in the process of thinking about a VAN presentation that I am going to be&#xD;
delivering. The topic is that of developer productivity. One of the things I read&#xD;
this morning was an excerpt from the book &lt;a href="http://www.pragprog.com/titles/ahptl/pragmatic-thinking-and-learning"&gt;Pragmatic&#xD;
Thinking and Learning&lt;/a&gt; (an amazing book). The actual fragment that caught my attention&#xD;
was written by an author named Anne Lamott: &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
"Perfectionism is the voice of the oppressor, the enemy of the people. It will&#xD;
keep you cramped and insane your whole life, and it is the main obstacle between you&#xD;
and a shitty first draft. I think perfectionism is based on the obsessive belief that&#xD;
if you run carefully enough, hitting each stepping-stone just right, you won't have&#xD;
to de. The truth is that you will die anyway and that a lot of people who aren't even&#xD;
looking at their feet are gong to do a whole lot better than you, and have a lot more&#xD;
fun while they're doing it." &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
This fragment sums up perfectly a phrase I say "a lot" to people that I&#xD;
have an opportunity to work with: "Perfect is the enemy of the good", I&#xD;
can't remember where I first heard that phrase many years ago, but it has been something&#xD;
that I tell myself all the time. I am not at all trying to say that we should not&#xD;
strive for excellence in the tasks that we undertake, I am just saying that the very&#xD;
act of wanting to come up with the "perfect" answer/solution right off the&#xD;
bat is the very thing that can often stop you from even starting the effort in a timely&#xD;
fashion. Instead of writing a crappy piece of code and taking the time to refactor&#xD;
to a cleaner solution, you can spend countless amounts of time staring at a screen,&#xD;
reading a book on good design, looking at other good designs. None of these activities&#xD;
are fruitless, but if they are the very things that stop you from making your own&#xD;
progress then they actually become a detriment to your individual progress. Worse,&#xD;
if those activities further cause you to think about how "imperfect" your&#xD;
own initial solution might be, you can very well paralyze yourself and put yourself&#xD;
in a situation where you will waste precious time. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Today you may well be facing down a tough problem, one that you have not yet faced&#xD;
before. My recommendation for you is tackle the problem in context, draw from your&#xD;
past skills, learn from your mistakes, and just take the first step. As a diligent&#xD;
coder you are not going to allow code smells to remain in the product that you build,&#xD;
but allow yourself to let the code take its initial shape and then "refactor&#xD;
without mercy". Rinse and repeat this process until you have your solution in&#xD;
hand. Enjoy yourself, remember why you became a coder in the first place. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://www.developwithpassion.com"&gt;Develop With Passion&lt;/a&gt;!!&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blog.jpboodhoo.com/aggbug.ashx?id=703015c0-1b75-47cb-a562-d2fbebc28307"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=diOvUF8II_4:6D2-NHal6uc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=diOvUF8II_4:6D2-NHal6uc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=diOvUF8II_4:6D2-NHal6uc:XQ266DUsA9M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=XQ266DUsA9M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JPBoodhoo?a=diOvUF8II_4:6D2-NHal6uc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JPBoodhoo?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JPBoodhoo/~4/diOvUF8II_4" height="1" width="1"/&gt;</description>
      <comments>http://blog.jpboodhoo.com/CommentView,guid,703015c0-1b75-47cb-a562-d2fbebc28307.aspx</comments>
      <category>Inspiration;Productivity</category>
    <feedburner:origLink>http://blog.jpboodhoo.com/AvoidTheTrapOfPerfectionism.aspx</feedburner:origLink></item>
  </channel>
</rss>
