<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Nick Berardi's Coder Journal</title><link>http://www.coderjournal.com</link><description>while(!(succeed = try()));</description><lastBuildDate>Sun, 18 Oct 2009 20:26:05 +0000</lastBuildDate><generator>http://wordpress.org/?v=2.8.5</generator><language>en</language><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><cloud domain="www.coderjournal.com" port="80" path="/?rsscloud=notify" registerProcedure="" protocol="http-post" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-sa/3.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/coderjournal" type="application/rss+xml" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoderjournal" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoderjournal" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoderjournal" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/coderjournal" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoderjournal" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fcoderjournal" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoderjournal" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoderjournal" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Fcoderjournal" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Fcoderjournal" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsalloy.com/?rss=http%3A%2F%2Ffeeds.feedburner.com%2Fcoderjournal" src="http://www.newsalloy.com/subrss3.gif">Subscribe with NewsAlloy</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fcoderjournal" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fcoderjournal" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fcoderjournal" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoderjournal" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoderjournal" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoderjournal" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoderjournal" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2Fcoderjournal" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Philly Code Camp 2009.2</title><link>http://feedproxy.google.com/~r/coderjournal/~3/pzgmswtwypE/</link><comments>http://www.coderjournal.com/2009/10/code-camp/#comments</comments><pubDate>Sun, 18 Oct 2009 19:59:04 +0000</pubDate><dc:creator>Nick Berardi</dc:creator><category><![CDATA[Personal]]></category><category><![CDATA[Programming]]></category><category><![CDATA[Code Camp]]></category><category><![CDATA[Code Camp 2009.2]]></category><category><![CDATA[philly.net]]></category><category><![CDATA[Public Speaking]]></category><guid isPermaLink="false">http://www.coderjournal.com/?p=783</guid><description><![CDATA[As I indicated a couple weeks ago I was going to be speaking at the Philly Code Camp 2009.2.  If you weren&#8217;t there you missed a great day of learning about many of the new technologies that are going to matter to you, as a developer, in the next 12 months.  Not all [...]]]></description><content:encoded><![CDATA[<p><img src="http://www.coderjournal.com/uploads/2009/10/pr_zune_hd_f.jpg" alt="Zune HD" title="Zune HD" width="200" class="alignright size-full wp-image-789" align="right" />As I <a href="http://www.coderjournal.com/2009/09/philly-code-camp-2009-2/">indicated a couple weeks ago</a> I was going to be speaking at the Philly Code Camp 2009.2.  If you weren&#8217;t there you missed a great day of learning about many of the new technologies that are going to matter to you, as a developer, in the next 12 months.  Not all of the topics were Microsoft related or even Developer related, for the first time this year there was an Enterprise IT track, targeting specifically you network admins.  So Code Camp next year is something you should pay attention too, even if you are not a developer.</p>
<p>Also the Beginner Track was broken in to two different tracks this year, Beginner I (which I was apart of) is designed for those of you who are brand new to software development and want to get a feel for the tools, Beginner II is designed for those of you who already have a handle on the tools and want to start learning a little more about developing software.  Both are great tracks and both had a very good showing, so if you know a high school student, college student, or seasoned learner that wants to start developing software, they should stay tuned and check back with the <a href="http://www.phillydotnet.org">Philly.NET website</a> in late March 2010.</p>
<p>Also if you weren&#8217;t there, I really hope you can make the next one in April.  You will not be disappointed.  The two presentations that I attended this Code Camp were:</p>
<ol>
<li><a href="http://codingsmarter.com">Al Katawazi&#8217;s</a> presentation on <a href="http://codingsmarter.com/post/2009/10/PhillyNet.aspx">using ASP.NET MVC in the Enterprise</a>.</li>
<li><a href="http://smallandmighty.net/">Dani Diaz&#8217;s</a> presentation on the Managed Extensibility Framework (MEF)</li>
</ol>
<p>Both presentations were interesting and engaging and I highly recommend them as speakers.</p>
<p>While I am on the subject, if you have a chance, and were present for my talks, please take the time to respond to the survey of what you thought about Philly Code Camp 2009.2 and specifically my talks.  This is the only way that Philly.NET Users Group can get feed back on what to do better next time and what worked great this time around.  I look forward to the feedback.  And there is a Zune HD in it for one lucky winner.</p>
<ul>
<li><strong><a href="http://codecamp.phillydotnet.org/2009-2/Lists/Evaluation/NewForm.aspx">Code Camp 2009.2 Evaluation</a></strong></li>
</ul>
<p>As I promised in my talks here are the downloadable resources that I used as part of my presentation.</p>
<hr/>
<h3>Beginner I Track &#8211; 10:30 AM &#8211; Gooey GUI&#8230; Programming in Visual Studio</h3>
<p><iframe src="http://docs.google.com/present/embed?id=dcrrgz44_43c2tgzkd5&#038;interval=5&#038;size=m" frameborder="0" width="555" height="451"></iframe></p>
<ul>
<li><strong>Microsoft Visual Studio Express</strong><br/><a href="http://www.microsoft.com/express/download">http://www.microsoft.com/express/download</a></li>
<li><strong>Microsoft SQL Server Express w/ Tools</strong><br/><a href="http://www.microsoft.com/express/sql/download">http://www.microsoft.com/express/sql/download</a></li>
<li><strong>Sara Ford&#8217;s Blog:</strong><br/><a href="http://blogs.msdn.com/saraford">http://blogs.msdn.com/saraford</a></li>
<li>And Sara Ford&#8217;s best selling <a href="http://www.amazon.com/gp/product/0735626405?tag=coderjournal-20">book on the subject</a></li>
</ul>
<hr/>
<h3>Tools Track &#8211; 3:30 AM &#8211; Visual Studio 2010 Extensibility</h3>
<p><iframe src="http://docs.google.com/present/embed?id=dcrrgz44_23g8s3sqd8&#038;interval=5&#038;size=m" frameborder="0" width="555" height="451"></iframe></p>
<ul>
<li><strong>MSDN Visual Studio Extensibility</strong><br/><a href="http://www.msdn.com/vsx">http://www.msdn.com/vsx</a></li>
<li><strong>Visual Studio Extensibility Team Blog</strong><br/><a href="http://blogs.msdn.com/vsxteam">http://blogs.msdn.com/vsxteam</a></li>
<li><strong>Samples shown during demonstration</strong><br/><a href="http://editorsamples.codeplex.com/">http://editorsamples.codeplex.com/</a></li>
<li><strong>My project for the URL Rewriter showing during demonstration</strong><br/><a href="http://urlrewriter.codeplex.com/">http://urlrewriter.codeplex.com/</a></li>
</ul>
<p><a target="_blank" href="http://theloungenet.com/feeds/redirect/DOTNETRSS/CJOURNAL/3D6F18E31636DE9A876C63B3267D7C2413BA660A"><img src="http://theloungenet.com/feeds/img/DOTNETRSS/CJOURNAL/3D6F18E31636DE9A876C63B3267D7C2413BA660A"></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/coderjournal?a=pzgmswtwypE:cOYFg-QsLSI:bcOpcFrp8Mo"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=bcOpcFrp8Mo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=pzgmswtwypE:cOYFg-QsLSI:zYSYRoQSaQY"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=zYSYRoQSaQY" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=pzgmswtwypE:cOYFg-QsLSI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=pzgmswtwypE:cOYFg-QsLSI:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=pzgmswtwypE:cOYFg-QsLSI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/coderjournal?i=pzgmswtwypE:cOYFg-QsLSI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=pzgmswtwypE:cOYFg-QsLSI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/coderjournal?i=pzgmswtwypE:cOYFg-QsLSI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=pzgmswtwypE:cOYFg-QsLSI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/coderjournal/~4/pzgmswtwypE" height="1" width="1"/>]]></content:encoded><wfw:commentRss>http://www.coderjournal.com/2009/10/code-camp/feed/</wfw:commentRss><slash:comments>0</slash:comments><feedburner:origLink>http://www.coderjournal.com/2009/10/code-camp/</feedburner:origLink></item><item><title>I am going to be speaking at Philly Code Camp 2009.2</title><link>http://feedproxy.google.com/~r/coderjournal/~3/IN1DiX7s47Y/</link><comments>http://www.coderjournal.com/2009/09/philly-code-camp-2009-2/#comments</comments><pubDate>Wed, 30 Sep 2009 12:03:49 +0000</pubDate><dc:creator>Nick Berardi</dc:creator><category><![CDATA[News]]></category><category><![CDATA[Personal]]></category><category><![CDATA[Portfolio]]></category><category><![CDATA[Code Camp]]></category><category><![CDATA[Code Camp 2009.2]]></category><category><![CDATA[philly.net]]></category><guid isPermaLink="false">http://www.coderjournal.com/?p=777</guid><description><![CDATA[For the second 2009 Philly Code Camp, it will be held at the DeVry University campus in Fort Washington, PA on Saturday, October 17 from 8:30 AM &#8211; 5:00 PM. If you haven&#8217;t signed up please register on the Philly.NET web site.  Detailed directions are on the DeVry web site.  Check here and here for the latest printable agenda, there [...]]]></description><content:encoded><![CDATA[<p>For the second 2009 Philly Code Camp, it will be held at the DeVry University campus in Fort Washington, PA on Saturday, October 17 from 8:30 AM &#8211; 5:00 PM. If you haven&#8217;t signed up <strong>please register</strong> on the Philly.NET <a style="text-decoration: none; color: #003399;" href="http://www.phillydotnet.org/Default.aspx?tabid=805">web site</a>.  Detailed directions are on the DeVry <a style="text-decoration: none; color: #003399;" href="http://www.devry.edu/locations/campuses/loc_ftwashingtoncampus.jsp">web site</a>.  Check <a style="text-decoration: none; color: #003399;" href="http://codecamp.phillydotnet.org/2009-2/Lists/Sessions/Full%20List.aspx">here</a> and <a style="text-decoration: none; color: #003399;" href="http://codecamp.phillydotnet.org/2009-2/Lists/Sessions/By%20Track.aspx">here</a> for the latest printable agenda, there will be:</p>
<ul>
<li>Lots of code, just say no to slides!</li>
<li>8 hours of presentations</li>
<li>60 sessions (8:30, 10:00, 12:30, 2:00, 3:30)</li>
<li>12 tracks including two hands-on Beginner rooms and the Bonus Track</li>
<li>600 seats with tables (laptops welcome)</li>
<li>Free breakfast, lunch, and afternoon snack (expanded menu!)</li>
<li>Raffles and prizes at 5:00</li>
<li>Convenient parking</li>
<li>After hours party in Ambler (network with speakers and attendees)</li>
</ul>
<p>All of this is made possible by the Gold partners (<strong>Component One, Hosting.com, TEK Systems</strong>), Silver partners (<strong>Pearson, Redgate, Telerik</strong>) and the Platinum site sponsors (<strong>DeVry University, Microsoft</strong>).</p>
<hr />
<h3>My First Presentation at 10:00</h3>
<p>I have been asked back to do <a href="http://www.coderjournal.com/2009/4/code-camp">my presentation from April</a> again in the newly expanded <em>Beginner I</em> track at 10:00 AM.  The abstract for this talk is as follows:</p>
<blockquote><p>This session explores the Microsoft Visual Studio development environment and how it is used to develop Web and Windows applications.  The topics include:</p>
<ul>
<li>The IDE</li>
<li>Solutions and projects</li>
<li>Templates</li>
<li>Files created</li>
<li>The debugger</li>
<li>The configuration file</li>
</ul>
</blockquote>
<p><em>If you are going to be attending this talk please bring Visual C# 2008 Express with you, that is going to be the main tool I will be using to demonstrate the features of Visual Studio.</em></p>
<hr />
<h3>My Second Presentation at 3:30 PM</h3>
<p>I will also be doing a new presentation on extending Visual Stuido 2010 in the <em>Tools </em>track at 3:30 PM.  The abstract for this is as follows:</p>
<blockquote><p>I will be showing the basics of how to get started on extending Visual Studio 2010 for custom highlighting and intellisense support for custom Domain Specific Languages that may be used with in a company for configuration or custom processing. I will be using a real world example, of how I am extending visual studio to support the coding of the Apache mod_rewrite style configuration files that are used in my URL Rewriter that was featured in PDC 2008 last year. <a style="text-decoration: none; color: #3966bf;" href="http://urlrewriter.codeplex.com/">http://urlrewriter.codeplex.com</a></p></blockquote>
<p><em>If you are going to be attending this talk please bring Visual Studio 2010 with you and the <a href="http://msdn.microsoft.com/en-us/vsx/default.aspx">Visual Studio SDK</a> already installed.</em></p>
<hr />On the day of the presentation I will be posting up the slides and any links that are relevant to my presentation on this blog.</p>
<p><a target="_blank" href="http://theloungenet.com/feeds/redirect/DOTNETRSS/CJOURNAL/8142D1635699E9FCA3E0D92EDEAA3853A869EE51"><img src="http://theloungenet.com/feeds/img/DOTNETRSS/CJOURNAL/8142D1635699E9FCA3E0D92EDEAA3853A869EE51"></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/coderjournal?a=IN1DiX7s47Y:nrKJo_EzVbc:bcOpcFrp8Mo"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=bcOpcFrp8Mo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=IN1DiX7s47Y:nrKJo_EzVbc:zYSYRoQSaQY"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=zYSYRoQSaQY" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=IN1DiX7s47Y:nrKJo_EzVbc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=IN1DiX7s47Y:nrKJo_EzVbc:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=IN1DiX7s47Y:nrKJo_EzVbc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/coderjournal?i=IN1DiX7s47Y:nrKJo_EzVbc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=IN1DiX7s47Y:nrKJo_EzVbc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/coderjournal?i=IN1DiX7s47Y:nrKJo_EzVbc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=IN1DiX7s47Y:nrKJo_EzVbc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/coderjournal/~4/IN1DiX7s47Y" height="1" width="1"/>]]></content:encoded><wfw:commentRss>http://www.coderjournal.com/2009/09/philly-code-camp-2009-2/feed/</wfw:commentRss><slash:comments>0</slash:comments><feedburner:origLink>http://www.coderjournal.com/2009/09/philly-code-camp-2009-2/</feedburner:origLink></item><item><title>Show CodeRush Xpress 9.2 Menu in Visual Studio</title><link>http://feedproxy.google.com/~r/coderjournal/~3/w6OrpRKFUyc/</link><comments>http://www.coderjournal.com/2009/08/show-coderush-xpress-9-2-menu-in-visual-studio/#comments</comments><pubDate>Mon, 31 Aug 2009 19:06:51 +0000</pubDate><dc:creator>Nick Berardi</dc:creator><category><![CDATA[How To]]></category><category><![CDATA[CodeRush]]></category><category><![CDATA[Xpress]]></category><guid isPermaLink="false">http://www.coderjournal.com/?p=772</guid><description><![CDATA[As promised to the people of my last post for CodeRush Xpress 9.1, here is the updated scripts for CodeRush Xpress 9.2, which was released last week.
The Keyboard Command Way
Shift+Ctrl+Alt+O
The Registry Hack Way

Show Menu for CodeRush Xpress (x86)
Show Menu for CodeRush Xpress (x64)

I really wish DevExpress would stop treating the registry as a dumping ground [...]]]></description><content:encoded><![CDATA[<p>As promised to the people of my <a href="http://www.coderjournal.com/2009/08/show-coderush-xpress-menu-in-visual-studio/">last post for CodeRush Xpress 9.1</a>, here is the updated scripts for CodeRush Xpress 9.2, which was <a href="http://www.devexpress.com/Products/Visual_Studio_Add-in/CodeRushX/">released last week</a>.</p>
<p>The Keyboard Command Way</p>
<blockquote><p><kbd>Shift+Ctrl+Alt+O</kbd></p></blockquote>
<p>The Registry Hack Way</p>
<ul>
<li><a href="http://coderjournal.googlecode.com/svn/trunk/Posts/2009/08/ShowMenuCodeRushXpress_x32-92.reg">Show Menu for CodeRush Xpress (x86)</a></li>
<li><a href="http://coderjournal.googlecode.com/svn/trunk/Posts/2009/08/ShowMenuCodeRushXpress_x64-92.reg">Show Menu for CodeRush Xpress (x64)</a></li>
</ul>
<p><em>I really wish DevExpress would stop treating the registry as a dumping ground and creating a new parallel registry path with each new install, it makes customizing the registry settings very difficult to keep up with.  I could see it for each major version, but common is a new registry path really needed for each minor version?</em></p>
<p><a target="_blank" href="http://theloungenet.com/feeds/redirect/DOTNETRSS/CJOURNAL/3028986A458E0EEAFCD2703389EC6157C1C9E1F3"><img src="http://theloungenet.com/feeds/img/DOTNETRSS/CJOURNAL/3028986A458E0EEAFCD2703389EC6157C1C9E1F3"></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/coderjournal?a=w6OrpRKFUyc:TGLW-8zYdYg:bcOpcFrp8Mo"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=bcOpcFrp8Mo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=w6OrpRKFUyc:TGLW-8zYdYg:zYSYRoQSaQY"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=zYSYRoQSaQY" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=w6OrpRKFUyc:TGLW-8zYdYg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=w6OrpRKFUyc:TGLW-8zYdYg:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=w6OrpRKFUyc:TGLW-8zYdYg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/coderjournal?i=w6OrpRKFUyc:TGLW-8zYdYg:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=w6OrpRKFUyc:TGLW-8zYdYg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/coderjournal?i=w6OrpRKFUyc:TGLW-8zYdYg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=w6OrpRKFUyc:TGLW-8zYdYg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/coderjournal/~4/w6OrpRKFUyc" height="1" width="1"/>]]></content:encoded><wfw:commentRss>http://www.coderjournal.com/2009/08/show-coderush-xpress-9-2-menu-in-visual-studio/feed/</wfw:commentRss><slash:comments>0</slash:comments><feedburner:origLink>http://www.coderjournal.com/2009/08/show-coderush-xpress-9-2-menu-in-visual-studio/</feedburner:origLink></item><item><title>Static Constructors in .NET 3.5, still a bad thing?</title><link>http://feedproxy.google.com/~r/coderjournal/~3/OiE9jVf7F7E/</link><comments>http://www.coderjournal.com/2009/08/static-constructors-in-net-3-5-still-a-bad-thing/#comments</comments><pubDate>Sun, 30 Aug 2009 20:55:02 +0000</pubDate><dc:creator>Nick Berardi</dc:creator><category><![CDATA[C#]]></category><category><![CDATA[Programming]]></category><category><![CDATA[beforefieldinit]]></category><category><![CDATA[CLR]]></category><category><![CDATA[Code Analysis]]></category><category><![CDATA[FxCop]]></category><category><![CDATA[Static Constructors]]></category><guid isPermaLink="false">http://www.coderjournal.com/?p=748</guid><description><![CDATA[Recently at the Philly.NET User Group, Kathleen Dollard gave a great presentation on the use of generics and rethinking object orientation.  Both topics were very engaging.  But the part of the night that I found most intriguing was a conversation, that I had in a Ruby Tuesdays after the presentation, about the useage of static constructors and [...]]]></description><content:encoded><![CDATA[<p>Recently at the Philly.NET User Group, <a href="http://msmvps.com/blogs/kathleen/">Kathleen Dollard</a> gave <a href="http://www.phillydotnet.org/Default.aspx?tabid=785">a great presentation on the use of generics and rethinking object orientation</a>.  Both topics were very engaging.  But the part of the night that I found most intriguing was a conversation, that I had in a Ruby Tuesdays after the presentation, about the useage of static constructors and if they are still a bad thing to use in your code.</p>
<p>Many years ago, I had read the articles by <a href="http://odetocode.com/Blogs/scott/archive/2004/09/15/481.aspx">K. Scott Allen</a> and <a href="http://blogs.msdn.com/brada/archive/2004/04/17/115300.aspx">Brad Abrams</a>, explaining why the original FxCop rule, <em>&#8220;Do not declare explicit static constructors&#8221;</em>, existed and the IL command <code>beforefieldinit</code>, that caused the FxCop rule to trigger and cause performance issues.  Jon Skeet explained it best <a href="http://stackoverflow.com/questions/610818/what-does-beforefieldinit-flag-do/610837#610837">in a recent Stack Overflow post</a>.</p>
<blockquote><p>Basically, <code>beforefieldinit</code> means &#8220;the type can be initialized at any point before any fields are referenced.&#8221;</p>
<p><em>In theory</em> that means it can be very lazily initialized &#8211; if you call a static method which doesn&#8217;t touch any fields, the JIT doesn&#8217;t need to initialize the type.</p>
<p><em>In practice</em> it means that the class is initialized earlier than it would be otherwise &#8211; it&#8217;s okay for it to be initialized at the start of the first method which might use it. Compare this with types which don&#8217;t have beforefieldinit applied to them, where the type initialization has to occur immediately before the first actual use.</p></blockquote>
<p>But, I had assumed that since this rule was never include in the Code Analysis (FxCop replacement) part of Visual Studio 2005, 2008, or 2010 that it was a non issue in .NET 2.0 and forward.  Since all these previous credible articles that I could find were run against the .NET 1.1 framework.  But I had never really looked in to it until now.  The first thing I did was create the following program to test 8 different senarios where a static constructor could be created by the compiler or was created by me to test the performance differences.</p>
<ul>
<li><a href="http://code.google.com/p/coderjournal/source/browse/trunk/Posts/2009/08/Program.cs">Program.cs</a></li>
</ul>
<p>Each of the 8 senarios had a public interface like the following:</p>
<pre class="brush: csharp">class StaticX
{
    static string Name = "Nick Berardi";
    static string GetName() { /* to make sure the Name property was referenced */ }
}</pre>
<p>The scenarios were broken down as follows:</p>
<ol>
<li><strong>Static1:</strong> static class, name set on field</li>
<li><strong>Static2:</strong> static class, name set in constructor</li>
<li><strong>Static3:</strong> static class, name set in property</li>
<li><strong>Static4:</strong> static class, name set on field and in constructor</li>
<li><strong>Static5:</strong> name set on field</li>
<li><strong>Static6:</strong> name set in constructor</li>
<li><strong>Static7:</strong> name set in property</li>
<li><strong>Static8:</strong> name set on field and in constructor</li>
</ol>
<p><img src="http://www.coderjournal.com/uploads/2009/08/static-constructor-test.png" alt="Static Constructor Test" title="Static Constructor Test" width="471" height="667" class="alignright size-full wp-image-751" align="right" />I then used reflector to give me the following IL dump of the code.</p>
<ul>
<li><a href="http://code.google.com/p/coderjournal/source/browse/trunk/Posts/2009/08/Program.il">Program.il</a></li>
</ul>
<p>If we look at the IL code for each of these classes and static constructors we start finding some interesting patterns in how the compiler optimizes the code.</p>
<h4>Static1, Static2, Static5, and Static6</h4>
<p>All the the following static constructor (<code>.cctor()</code>), which is interesting because half of them defined the code in the static constructor and half defined the code by setting the field during initialization.</p>
<pre class="brush: csharp">.method private hidebysig specialname rtspecialname static void .cctor() cil managed
{
    .maxstack 8
    L_0000: ldstr "Nick Berardi"
    L_0005: stsfld string ConsoleApplication1.Program/Static1::Name
    L_000a: ret
}</pre>
<h4>Static3 and Static7</h4>
<p>These do not have any static constructor, which we could have probably guessed because there was no constructor defined and no fields set during intialization of the classes.</p>
<h4>Static4 and Static8</h4>
<p>These do not match any of the other static constructors we have seen, probably because there is an operating occurring in them.</p>
<pre class="brush: csharp">.method private hidebysig specialname rtspecialname static void .cctor() cil managed
{
    .maxstack 8
    L_0000: ldstr "Nick"
    L_0005: stsfld string ConsoleApplication1.Program/Static8::Name
    L_000a: ldsfld string ConsoleApplication1.Program/Static8::Name
    L_000f: ldstr " Berardi"
    L_0014: call string [mscorlib]System.String::Concat(string, string)
    L_0019: stsfld string ConsoleApplication1.Program/Static8::Name
    L_001e: ret
}</pre>
<p>There is one more place we are going to want to pay attention to before we start looking at the performance, and I sort of alluded to this at the beginning of the article.  That is the IL for the class definition:</p>
<pre class="brush: csharp">.class abstract auto ansi sealed nested public beforefieldinit Static1
.class abstract auto ansi sealed nested public                 Static2
.class abstract auto ansi sealed nested public beforefieldinit Static3
.class abstract auto ansi sealed nested public                 Static4
.class          auto ansi        nested public beforefieldinit Static5
.class          auto ansi        nested public                 Static6
.class          auto ansi        nested public beforefieldinit Static7
.class          auto ansi        nested public                 Static8</pre>
<p><em>Please note that I added in the spaces to show the differences between the definitions.</em></p>
<p>You will notice that the <code>abstract</code> and <code>sealed</code> are missing from <em>Static5</em> &#8211; <em>Static8</em>, don&#8217;t worry about those keywords they are the difference between a <code>static class</code> and an <code>instantiatable class</code>.  The one we are about is <code>beforefieldinit</code>, which is only added to classes that don&#8217;t already contain a static constructor.  The definition of how this works has <a href="http://www.ecma-international.org/publications/standards/Ecma-335-arch.htm">changed slightly from the original specification</a> (<a href="http://msdn.microsoft.com/en-us/netframework/aa569283.aspx">ECMA-335</a>).  Here is the break down as related to .NET Framework releases:</p>
<ul>
<li>1st Edition (December 2001) &#8211; .NET 1.0</li>
<li>2nd Edition (December 2002) &#8211; .NET 1.1</li>
<li>3rd Edition (June 2005) &#8211; .NET 2.0, .NET 3.0, .NET 3.5</li>
<li>4th Edition (June 2006) &#8211; .NET 2.0, .NET 3.0, .NET 3.5 (Changes from the previous edition were made to align this Standard with ISO/IEC 23271:2006.)</li>
</ul>
<p>I have marked changes that have been added since the first edition.</p>
<blockquote><p>
The semantics of when and what triggers execution of such type initialization methods, is as follows: </p>
<ol>
<li>A type can have a type-initializer method, or not. </li>
<li>A type can be specified as having a relaxed semantic for its type-initializer method (for<br />
convenience below, we call this relaxed semantic <code>BeforeFieldInit</code>). </li>
<li>If marked <code>BeforeFieldInit </code>then the type’s initializer method is executed at, or sometime before,<br />
first access to any static field defined for that type. </li>
<li>If not marked <code>BeforeFieldInit </code>then that type’s initializer method is executed at (i.e., is triggered<br />
by): </p>
<ul>
<li>first access to any static field of that type, or</li>
<li>first invocation of any static method of that type or </li>
<li>first invocation of any constructor for that type. <strong>(new in 3rd edition)</strong></li>
</ul>
</li>
<li>Execution of any type&#8217;s initializer method will not trigger automatic execution of any initializer<br />
methods defined by its base type, nor of any interfaces that the type implements</li>
</ol>
<p><strong>START &#8212; The following is new to the 3rd edition.</strong><br />
For reference types, a constructor has to be called to create a non-null instance. Thus, for reference types, the<br />
.cctor will be called before instance fields can be accessed and methods can be called on non-null instances. For<br />
value types, an “all-zero” instance can be created without a constructor (but only this value can be created<br />
without a constructor). Thus for value types, the .cctor is only guaranteed to be called for instances of the value<br />
type that are not “all-zero”.  [<em>Note</em>: This changes the semantics slightly in the reference class case from the first<br />
edition of this standard, in that the .cctor might not be called before an instance method is invoked if the 'this'<br />
argument is null. The added performance of avoiding class constructors warrants this change. <em>end note</em>]<br />
<strong>END</strong></p>
<p>[<em>Note</em>: <code>BeforeFieldInit </code>behavior is intended for initialization code with no interesting side-effects, where exact<br />
timing does not matter.  Also, under <code>BeforeFieldInit </code>semantics, type initializers are allowed to be executed <em>at<br />
or before</em> first access to any static field of that type, at the discretion of the CLI.<br />
If a language wishes to provide more rigid behavior—e.g., type initialization automatically triggers execution<br />
of base class’s initializers, in a top-to-bottom order—then it can do so by either: </p>
<ul>
<li>defining hidden static fields and code in each class constructor that touches the hidden static field of its<br />
base class and/or interfaces it implements, or </li>
<li>by making explicit calls to System.Runtime.CompilerServices.<strike>Runtime-Helpers</strike>RuntimeHelpers<strong><sup>3rd edition</sup></strong>.RunClassConstructor<br />
(see Partition IV).</li>
</ul>
<p><em>end note</em>] </p></blockquote>
<p>So to analyze what has changed, it looks like some major changes took place in the CLR for the .NET 2.0 framework on how and when static constructors should be initialized.  In <a href="http://odetocode.com/Blogs/scott/archive/2004/09/15/481.aspx">K. Scott Allen&#8217;s post that I referenced above</a> he concluded that classes with out the <code>beforefieldinit</code> IL command ran 5 times faster on the .NET 1.1 framework.  Lets see if that still holds true for the .NET 2.0 framework (and .NET 3.0 and 3.5 which run off the same CLR as .NET 2.0).</p>
<p>To test this, I ran each of the 8 scenarios through a loop about <strong>2.15 billion</strong> times.  Or <a href="http://msdn.microsoft.com/en-us/library/system.int32.maxvalue.aspx">Int32.MaxValue</a>.  Then I repeated the process 5 times (for those counting each one was ran about 10 billion times), and averaged the results and came up with these numbers:</p>
<ol>
<li><strong>Static1:</strong> <code>05.7505114</code> seconds (static class, name set on field)</li>
<li><strong>Static2:</strong> <code>07.4920393</code> seconds (static class, name set in constructor)</li>
<li><strong>Static3:</strong> <code>11.6594099</code> seconds (static class, name set in property)</li>
<li><strong>Static4:</strong> <code>08.3254804</code> seconds (static class, name set on field and in constructor)</li>
<li><strong>Static5:</strong> <code>05.7362727</code> seconds (name set on field)</li>
<li><strong>Static6:</strong> <code>07.6593536</code> seconds (name set in constructor)</li>
<li><strong>Static7:</strong> <code>12.4801669</code> seconds (name set in property)</li>
<li><strong>Static8:</strong> <code>08.3191176</code> seconds (name set on field and in constructor)</li>
</ol>
<p>We can obviously throw out the outliers of setting the name in the property because they where 2 times slower than the fastest method.  And we can also throw out the name being set half in the field and half in the constructor, because this is obviously not the best performing and is also not really the best way to code this type of field, and it was only in there as a baseline for doing both a field and constructor setting in the same class.</p>
<p>So lets look at the actual numbers of field vs constructor:</p>
<table>
<tr>
<th>&nbsp;</th>
<th>field</th>
<th>constructor</th>
<th>difference</th>
</tr>
<tr>
<th>static class</th>
<td><code>05.750511</code></td>
<td><code>07.492039</code></td>
<td><code>01.741528</code></td>
</tr>
<tr>
<th>instantiatable class</th>
<td><code>05.7362727</code></td>
<td><code>07.6593536</code></td>
<td><code>01.9230809</code></td>
</tr>
<tr>
<th>difference</th>
<td><code>00.014238</code>3</td>
<td><code>00.167314</code>6</td>
<td>&nbsp;</td>
</tr>
</table>
<p>The performance points are pretty much a wash between <em>static class</em> and <em>instantiatable class</em>, and there is essentially no difference between the field and constructor for everyday normal programs to think about changing how you create your static-code as related to fields or constructors.  The difference was only 30%, while that sounds like a lot the difference was only 2 seconds over 2.15 billion times run, so we are really talking about fractions of milliseconds per instance.  In addition it was no 500% reported by K. Scott Allen against .NET 1.1 back in 2004.</p>
<p>You can draw your own conclusions.  <strong>But my recommendation is to NOT spend your time changing your code from the use of static constructor to fields, because you won&#8217;t find the performance gains in your application.</strong>  Spend the time on something useful, like the amount of data you are pulling from the database or other places.  </p>
<p>I think we can finally put this issue to rest and say that there is no more performance penalty to a degree that every day programmers should care about if you are using the .NET 2.0 framework or forward.  Which means I probably guessed correctly as to why they removed it from the Code Analysis rules in Visual Studio 2005.  </p>
<p><strong>Update:</strong> I had to run each static class individually again to get the correct results, because after I had published this I started playing around with other scenario and noticed that there seemed to be an <strong>optimization of static constructor classes (without <code>beforefieldinit</code>), with the same constructor signature, that got loaded later</strong>.  With the new results, there is now there is virtually no difference between static classes and instantiatable classes which is what I sort of assumed would happen from the beginning.</p>
<p>If anybody knows why static constructor classes that share the same signature would be optimized can you please let me know, this is a new mystery to the static constructor debate.</p>
<p><a target="_blank" href="http://theloungenet.com/feeds/redirect/DOTNETRSS/CJOURNAL/A4242763880040D6AD2D2E4760A39E50F61CEC96"><img src="http://theloungenet.com/feeds/img/DOTNETRSS/CJOURNAL/A4242763880040D6AD2D2E4760A39E50F61CEC96"></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/coderjournal?a=OiE9jVf7F7E:cI8F0ZnLpOw:bcOpcFrp8Mo"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=bcOpcFrp8Mo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=OiE9jVf7F7E:cI8F0ZnLpOw:zYSYRoQSaQY"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=zYSYRoQSaQY" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=OiE9jVf7F7E:cI8F0ZnLpOw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=OiE9jVf7F7E:cI8F0ZnLpOw:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=OiE9jVf7F7E:cI8F0ZnLpOw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/coderjournal?i=OiE9jVf7F7E:cI8F0ZnLpOw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=OiE9jVf7F7E:cI8F0ZnLpOw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/coderjournal?i=OiE9jVf7F7E:cI8F0ZnLpOw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=OiE9jVf7F7E:cI8F0ZnLpOw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/coderjournal/~4/OiE9jVf7F7E" height="1" width="1"/>]]></content:encoded><wfw:commentRss>http://www.coderjournal.com/2009/08/static-constructors-in-net-3-5-still-a-bad-thing/feed/</wfw:commentRss><slash:comments>2</slash:comments><feedburner:origLink>http://www.coderjournal.com/2009/08/static-constructors-in-net-3-5-still-a-bad-thing/</feedburner:origLink></item><item><title>How to create a Reverse Proxy using Url Rewriter</title><link>http://feedproxy.google.com/~r/coderjournal/~3/1T4rDhYb5Qw/</link><comments>http://www.coderjournal.com/2009/08/how-to-create-a-reverse-proxy-using-url-rewriter/#comments</comments><pubDate>Tue, 18 Aug 2009 18:01:07 +0000</pubDate><dc:creator>Nick Berardi</dc:creator><category><![CDATA[How To]]></category><category><![CDATA[Managed Fusion]]></category><category><![CDATA[Reverse Proxy]]></category><category><![CDATA[URL Rewriter]]></category><guid isPermaLink="false">http://www.coderjournal.com/?p=746</guid><description><![CDATA[I just wanted to share a really well written article on how to setup a Reverse Proxy, by John Gully, using the Url Rewriter that I have been working on for the past 2 years.  Here is an excerpt from his article.
I recently came to realize that our website situation was growing out of [...]]]></description><content:encoded><![CDATA[<p>I just wanted to share a <a href="http://www.johngully.com/blog/2009/08/reverse-proxy-using-url-rewriter.html">really well written article on how to setup a Reverse Proxy</a>, by <a href="http://www.johngully.com">John Gully</a>, using the <a href="http://urlrewriter.codeplex.com">Url Rewriter</a> that I have been working on for the past 2 years.  Here is an excerpt from <a href="http://www.johngully.com/blog/2009/08/reverse-proxy-using-url-rewriter.html">his article</a>.</p>
<blockquote><p>I recently came to realize that our website situation was growing out of hand. We had a corporate website, an intranet site, and even a site for web access to email. All of these sites were scattered across multiple servers and each was on a unique port. While this worked, it was not simple. Each new site had to have a new rule configured in the firewall, and who wants the hassle of putting port number at the end of a url?</p>
<p>The solution to this mess turned out to be adding a <a href="http://en.wikipedia.org/wiki/Reverse_proxy">reverse proxy</a> to our network. By simply providing different urls (www.example.com, mail.example.com) the incomming traffic can be anlayzed by the proxy server and routed to the appropriate internal web server. All the incomming traffic is sent over the default port 80 so the end user never sees any difference. That&#8217;s exactly what I wanted, great!</p>
<p>Since our sites are all built upon ASP.NET and hosted on IIS6 the natural option for this was <a href="http://www.microsoft.com/isa">Microsoft ISA Server</a>. Unfortunately, the $1500 cost was way beyond our small company&#8217;s internal IT budget. So it was off to Google for me, and after some searching, it appeared that the open source project <a href="http://www.managedfusion.com/products/url-rewriter/">Url Rewriter</a> by <a href="http://www.managedfusion.com/">ManagedFusion</a> <em>[sic]</em> seemed to fit the bill.</p></blockquote>
<p>Thanks for the great write up John.  I hope to be including John&#8217;s article in an up coming FAQ wiki on my CodePlex project site in the near future.</p>
<p><a target="_blank" href="http://theloungenet.com/feeds/redirect/DOTNETRSS/CJOURNAL/0E217C71E6FAFBF7DCBE8CF53376AE368846E8D9"><img src="http://theloungenet.com/feeds/img/DOTNETRSS/CJOURNAL/0E217C71E6FAFBF7DCBE8CF53376AE368846E8D9"></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/coderjournal?a=1T4rDhYb5Qw:c2OCk3H_8-E:bcOpcFrp8Mo"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=bcOpcFrp8Mo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=1T4rDhYb5Qw:c2OCk3H_8-E:zYSYRoQSaQY"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=zYSYRoQSaQY" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=1T4rDhYb5Qw:c2OCk3H_8-E:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=1T4rDhYb5Qw:c2OCk3H_8-E:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=1T4rDhYb5Qw:c2OCk3H_8-E:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/coderjournal?i=1T4rDhYb5Qw:c2OCk3H_8-E:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=1T4rDhYb5Qw:c2OCk3H_8-E:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/coderjournal?i=1T4rDhYb5Qw:c2OCk3H_8-E:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=1T4rDhYb5Qw:c2OCk3H_8-E:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/coderjournal/~4/1T4rDhYb5Qw" height="1" width="1"/>]]></content:encoded><wfw:commentRss>http://www.coderjournal.com/2009/08/how-to-create-a-reverse-proxy-using-url-rewriter/feed/</wfw:commentRss><slash:comments>0</slash:comments><feedburner:origLink>http://www.coderjournal.com/2009/08/how-to-create-a-reverse-proxy-using-url-rewriter/</feedburner:origLink></item><item><title>TF53002, TF30040, TF30059, TF30063 Team Foundation Server Errors</title><link>http://feedproxy.google.com/~r/coderjournal/~3/XN4sXYnZDdQ/</link><comments>http://www.coderjournal.com/2009/08/tf53002-tf30040-tf30059-tf30063-team-foundation-servers-errors/#comments</comments><pubDate>Mon, 17 Aug 2009 00:07:00 +0000</pubDate><dc:creator>Nick Berardi</dc:creator><category><![CDATA[Uncategorized]]></category><category><![CDATA[CNAME]]></category><category><![CDATA[TF30040]]></category><category><![CDATA[TF30059]]></category><category><![CDATA[TF30063]]></category><category><![CDATA[TF53002]]></category><category><![CDATA[TFS]]></category><guid isPermaLink="false">http://www.coderjournal.com/?p=742</guid><description><![CDATA[Today I received the following error while getting ready to do some new development for my URL Rewriter.
TF53002: Unable to obtain registration data for application VersionControl.
TF30040: The database is not correctly configured. Contact your Team Foundation Server administrator.
TF30059: Fatal error while initializing web service
TF30063: You are not authorized to access myserver.443. (type TeamFoundationServerUnauthorizedException)
This is very [...]]]></description><content:encoded><![CDATA[<p>Today I received the following error while getting ready to do some new development for my <a href="http://urlrewriter.codeplex.com">URL Rewriter</a>.</p>
<blockquote><p>TF53002: Unable to obtain registration data for application VersionControl.<br />
TF30040: The database is not correctly configured. Contact your Team Foundation Server administrator.<br />
TF30059: Fatal error while initializing web service<br />
TF30063: You are not authorized to access <em>myserver</em>.443. (type TeamFoundationServerUnauthorizedException)</p></blockquote>
<p>This is very weird because I was just working on it earlier this week, without any issues.  So I go in to check the recent update history of Windows Update and to my surprise I see 13 new updates, mostly security related.  And since TF30063 is a security related exception, I think I found the culprit.  Here are the KB articles of the updates that were done for reference:</p>
<ol>
<li>KB956744</li>
<li>KB973540</li>
<li>KB947319</li>
<li>KB971032</li>
<li>KB960859</li>
<li>KB971557</li>
<li>KB973869</li>
<li>KB973507</li>
<li>KB973354</li>
<li>KB961371</li>
<li>KB971657</li>
<li>KB890830</li>
<li>KB973815</li>
</ol>
<p>So I started searching the web for each of those error messages, and I found a ton of old articles related to the SP1 release of Team Foundation Server.  However I upgraded about a year ago to SP1 so I doubt that is the issue.  But during my searching I found an obscure article referencing <a href="http://support.microsoft.com/kb/926642">KB926642</a>, which on first pass I just brushed off as not being the issue.  But as I started reading it I remembered that I do access my server through a CNAME address, and one of these security updates might have disabled Windows Authentication through CNAME&#8217;s.  So I tried as the article suggested.</p>
<blockquote><p>\\myserver\c$ &#8212; works<br />
\\myserver-cname\c$ &#8212; tells me I am not authorized</p></blockquote>
<p>So I followed Method 1 in KB926642:</p>
<blockquote>
<h4>Method 1 (recommended): Create the Local Security Authority host names that can be referenced in an NTLM authentication request</h4>
<p>To do this, follow these steps for all the nodes on the client computer:</p>
<ol>
<li>Click <strong>Start</strong>, click <strong>Run</strong>, type <strong>regedit</strong>, and then click <strong>OK</strong>.</li>
<li>Locate and then click the following registry subkey:<strong>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0</strong></li>
<li>Right-click <strong>MSV1_0</strong>, point to <strong>New</strong>, and then click <strong>Multi-String Value</strong>.</li>
<li>In the <strong>Name</strong> column, type <strong>BackConnectionHostNames</strong>, and then press ENTER.</li>
<li>Right-click <strong>BackConnectionHostNames</strong>, and then click <strong>Modify</strong>.</li>
<li>In the <strong>Value</strong> data box, type the CNAME or the DNS alias, that is used for the local shares on the computer, and then click <strong>OK</strong>.<strong>Note </strong>Type each host name on a separate line.
<p><strong>Note </strong>If the BackConnectionHostNames registry entry exists as a REG_DWORD type, you have to delete the BackConnectionHostNames registry entry.</li>
<li>Exit Registry Editor, and then restart the computer.</li>
</ol>
</blockquote>
<p>And everything is working great now.  So if you are using a CNAME with your TF server, you may want to consider adding the CNAME in to the BackConnectionHostNames.  It will not only help your TF server, but all your other connections to this server that use Windows Authentication and the CNAME.  Hope this helps somebody else besides me.</p>
<p><a target="_blank" href="http://theloungenet.com/feeds/redirect/DOTNETRSS/CJOURNAL/7E402DDADF13C50603000906D8940100CAAF0DBE"><img src="http://theloungenet.com/feeds/img/DOTNETRSS/CJOURNAL/7E402DDADF13C50603000906D8940100CAAF0DBE"></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/coderjournal?a=XN4sXYnZDdQ:z7-x8GQm9eU:bcOpcFrp8Mo"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=bcOpcFrp8Mo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=XN4sXYnZDdQ:z7-x8GQm9eU:zYSYRoQSaQY"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=zYSYRoQSaQY" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=XN4sXYnZDdQ:z7-x8GQm9eU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=XN4sXYnZDdQ:z7-x8GQm9eU:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=XN4sXYnZDdQ:z7-x8GQm9eU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/coderjournal?i=XN4sXYnZDdQ:z7-x8GQm9eU:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=XN4sXYnZDdQ:z7-x8GQm9eU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/coderjournal?i=XN4sXYnZDdQ:z7-x8GQm9eU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=XN4sXYnZDdQ:z7-x8GQm9eU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/coderjournal/~4/XN4sXYnZDdQ" height="1" width="1"/>]]></content:encoded><wfw:commentRss>http://www.coderjournal.com/2009/08/tf53002-tf30040-tf30059-tf30063-team-foundation-servers-errors/feed/</wfw:commentRss><slash:comments>0</slash:comments><feedburner:origLink>http://www.coderjournal.com/2009/08/tf53002-tf30040-tf30059-tf30063-team-foundation-servers-errors/</feedburner:origLink></item><item><title>Fun With Wacky JavaScript Type Comparison</title><link>http://feedproxy.google.com/~r/coderjournal/~3/8JkKVsRRrys/</link><comments>http://www.coderjournal.com/2009/08/fun-with-wacky-javascript-type-comparison/#comments</comments><pubDate>Thu, 13 Aug 2009 15:05:03 +0000</pubDate><dc:creator>Nick Berardi</dc:creator><category><![CDATA[Programming]]></category><category><![CDATA[JavaScript]]></category><guid isPermaLink="false">http://www.coderjournal.com/?p=729</guid><description><![CDATA[I recently had a conversation with Scoot Koon (LazyCoder) over Twitter about the wacky JavaScript type comparisons that are allowed.  I was interested to see what weird oddities would come out if I compared the whole type system against it self.  So I sat down and wrote a simple JavaScript routine to do just that, [...]]]></description><content:encoded><![CDATA[<p>I recently had a conversation with <a href="http://www.lazycoder.com">Scoot Koon (LazyCoder)</a> over <a href="http://twitter.com/lazycoder">Twitter</a> about the <a href="http://twitter.com/nberardi/status/3285947110">wacky JavaScript type comparisons</a> that are allowed.  I was interested to see what weird oddities would come out if I compared the whole type system against it self.  So I sat down and wrote a simple JavaScript routine to do just that, and the below reference table is the output of that routine.</p>
<table border="0">
<thead>
<tr>
<th> </th>
<th style="text-align:center">null</th>
<th style="text-align:center">undefined</th>
<th style="text-align:center">true</th>
<th style="text-align:center">false</th>
<th style="text-align:center">-1</th>
<th style="text-align:center">0</th>
<th style="text-align:center">1</th>
<th style="text-align:center">NaN</th>
<th style="text-align:center">Infinity</th>
<th style="text-align:center">&#8220;&#8221;</th>
<th style="text-align:center">&#8221; &#8220;</th>
<th style="text-align:center">&#8220;null&#8221;</th>
<th style="text-align:center">&#8220;undefined&#8221;</th>
<th style="text-align:center">&#8220;true&#8221;</th>
<th style="text-align:center">&#8220;false&#8221;</th>
<th style="text-align:center" nowrap="nowarp">&#8220;-1&#8243;</th>
<th style="text-align:center">&#8220;0&#8243;</th>
<th style="text-align:center">&#8220;1&#8243;</th>
<th style="text-align:center">&#8220;NaN&#8221;</th>
<th style="text-align:center">&#8220;Infinity&#8221;</th>
</tr>
</thead>
<tbody>
<tr>
<th>null</th>
<td style="background-color: black; text-align: center;">null</td>
<td style="color: #00af33; background-color: green; text-align: center;">null</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
</tr>
<tr>
<th>undefined</th>
<td style="color: #00af33; background-color: green; text-align: center;">undefined</td>
<td style="background-color: black; text-align: center;">undefined</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
</tr>
<tr>
<th>true</th>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="background-color: black; text-align: center;">true</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #00af33; background-color: green; text-align: center;">true</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #00af33; background-color: green; text-align: center;">true</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
</tr>
<tr>
<th>false</th>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="background-color: black; text-align: center;">false</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #00af33; background-color: green; text-align: center;">false</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #00af33; background-color: green; text-align: center;">false</td>
<td style="color: #00af33; background-color: green; text-align: center;">false</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #00af33; background-color: green; text-align: center;">false</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
</tr>
<tr>
<th>-1</th>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="background-color: black; text-align: center;">-1</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #00af33; background-color: green; text-align: center;">-1</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
</tr>
<tr>
<th>0</th>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #00af33; background-color: green; text-align: center;">0</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="background-color: black; text-align: center;">0</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #00af33; background-color: green; text-align: center;">0</td>
<td style="color: #00af33; background-color: green; text-align: center;">0</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #00af33; background-color: green; text-align: center;">0</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
</tr>
<tr>
<th>1</th>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #00af33; background-color: green; text-align: center;">1</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="background-color: black; text-align: center;">1</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #00af33; background-color: green; text-align: center;">1</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
</tr>
<tr>
<th>NaN</th>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
</tr>
<tr>
<th>Infinity</th>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="background-color: black; text-align: center;">Infinity</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #00af33; background-color: green; text-align: center;">Infinity</td>
</tr>
<tr>
<th>&#8220;&#8221;</th>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #00af33; background-color: green; text-align: center;">&#8220;&#8221;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #00af33; background-color: green; text-align: center;">&#8220;&#8221;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="background-color: black; text-align: center;">&#8220;&#8221;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
</tr>
<tr>
<th>&#8221; &#8220;</th>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #00af33; background-color: green; text-align: center;">&#8221; &#8220;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #00af33; background-color: green; text-align: center;">&#8221; &#8220;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="background-color: black; text-align: center;">&#8221; &#8220;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
</tr>
<tr>
<th>&#8220;null&#8221;</th>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="background-color: black; text-align: center;">&#8220;null&#8221;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
</tr>
<tr>
<th>&#8220;undefined&#8221;</th>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="background-color: black; text-align: center;">&#8220;undefined&#8221;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
</tr>
<tr>
<th>&#8220;true&#8221;</th>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="background-color: black; text-align: center;">&#8220;true&#8221;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
</tr>
<tr>
<th>&#8220;false&#8221;</th>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="background-color: black; text-align: center;">&#8220;false&#8221;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
</tr>
<tr>
<th>&#8220;-1&#8243;</th>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #00af33; background-color: green; text-align: center;" nowrap="nowarp">&#8220;-1&#8243;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="background-color: black; text-align: center;">&#8220;-1&#8243;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
</tr>
<tr>
<th>&#8220;0&#8243;</th>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #00af33; background-color: green; text-align: center;">&#8220;0&#8243;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #00af33; background-color: green; text-align: center;">&#8220;0&#8243;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="background-color: black; text-align: center;">&#8220;0&#8243;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
</tr>
<tr>
<th>&#8220;1&#8243;</th>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #00af33; background-color: green; text-align: center;">&#8220;1&#8243;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #00af33; background-color: green; text-align: center;">&#8220;1&#8243;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="background-color: black; text-align: center;">&#8220;1&#8243;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
</tr>
<tr>
<th>&#8220;NaN&#8221;</th>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="background-color: black; text-align: center;">&#8220;NaN&#8221;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
</tr>
<tr>
<th>&#8220;Infinity&#8221;</th>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #00af33; background-color: green; text-align: center;">&#8220;Infinity&#8221;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="color: #e0e0e0; text-align: center;">&#8211;</td>
<td style="background-color: black; text-align: center;">&#8220;Infinity&#8221;</td>
</tr>
</tbody>
</table>
<p>So some of the oddities that emerged to me are:</p>
<ul>
<li>The word &#8220;Infinity&#8221; is equal to the type <code>Infinity</code>, however &#8220;true&#8221; or &#8220;false&#8221; don&#8217;t equal <code>true</code> or <code>false</code> respectively.</li>
<li><code>" " == 0 == false</code> and also <code>"" == 0 == false</code>, however <code>" " != ""</code></li>
<li><strong>Update</strong> Just noticed that <code>NaN != NaN</code> but <code>Infinity == Infinity</code></li>
</ul>
<p>If you would like to try this your self, or want to add to it, here is the code that I used.</p>
<pre class="brush: javascript">
var values = [null, undefined, true, false, -1, 0, 1, NaN, Infinity, &quot;&quot;, &quot; &quot;, &quot;null&quot;, &quot;undefined&quot;, &quot;true&quot;, &quot;false&quot;, &quot;-1&quot;, &quot;0&quot;, &quot;1&quot;, &quot;NaN&quot;, &quot;Infinity&quot;];

document.write(&quot;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&quot;)
for (var x = 0; x &lt; values.length; x++) {
	document.write(&quot;&lt;th&gt;&quot; + (x &gt; 8 ? &quot;\&quot;&quot; : &quot;&quot;) + values[x] + (x &gt; 8 ? &quot;\&quot;&quot; : &quot;&quot;) + &quot;&lt;/th&gt;&quot;);
}
document.write(&quot;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&quot;);
for (var i = 0; i &lt; values.length; i++) {
	document.write(&quot;&lt;tr&gt;&quot;);
	document.write(&quot;&lt;th&gt;&quot; + (i &gt; 8 ? &quot;\&quot;&quot; : &quot;&quot;) + values[i] + (i &gt; 8 ? &quot;\&quot;&quot; : &quot;&quot;) + &quot;&lt;/th&gt;&quot;);

	for (var j = 0; j &lt; values.length; j++) {
		var output = values[i] == values[j];

		document.write(&quot;&lt;td style=\&quot;text-align:center;&quot; + (i == j ? &quot;background-color:black;&quot; : (output ? &quot;background-color:green;color:#00AF33;&quot; : &quot;color:#e0e0e0;&quot;)) + &quot;\&quot;&gt;&quot;);
		document.write(output ? (i &gt; 8 ? &quot;\&quot;&quot; : &quot;&quot;) + values[i] + (i &gt; 8 ? &quot;\&quot;&quot; : &quot;&quot;) : &quot;--&quot;);
		document.write(&quot;&lt;/td&gt;&quot;);
	}

	document.write(&quot;&lt;/tr&gt;&quot;);
}
document.write(&quot;&lt;/tbody&gt;&lt;/table&gt;&quot;);
</pre>
<p>I think <a href="http://twitter.com/lazycoder/statuses/3287262166">Scott really hit the nail on the head</a> when he said this about JavaScript coercion.</p>
<p><a href="http://twitter.com/lazycoder/statuses/3287262166"><img src="http://www.coderjournal.com/uploads/2009/08/lazycoder-on-javascript-coercion.png" alt="LazyCoder (Scott Koon) on JavaScript Coercion" title="LazyCoder (Scott Koon) on JavaScript Coercion" width="612" height="341" class="alignnone size-full wp-image-730" /></a></p>
<p><a target="_blank" href="http://theloungenet.com/feeds/redirect/DOTNETRSS/CJOURNAL/2A754B7E4F824688DE2403A3699318CFB2A4F391"><img src="http://theloungenet.com/feeds/img/DOTNETRSS/CJOURNAL/2A754B7E4F824688DE2403A3699318CFB2A4F391"></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/coderjournal?a=8JkKVsRRrys:8C1RKzNzwzw:bcOpcFrp8Mo"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=bcOpcFrp8Mo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=8JkKVsRRrys:8C1RKzNzwzw:zYSYRoQSaQY"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=zYSYRoQSaQY" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=8JkKVsRRrys:8C1RKzNzwzw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=8JkKVsRRrys:8C1RKzNzwzw:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=8JkKVsRRrys:8C1RKzNzwzw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/coderjournal?i=8JkKVsRRrys:8C1RKzNzwzw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=8JkKVsRRrys:8C1RKzNzwzw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/coderjournal?i=8JkKVsRRrys:8C1RKzNzwzw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=8JkKVsRRrys:8C1RKzNzwzw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/coderjournal/~4/8JkKVsRRrys" height="1" width="1"/>]]></content:encoded><wfw:commentRss>http://www.coderjournal.com/2009/08/fun-with-wacky-javascript-type-comparison/feed/</wfw:commentRss><slash:comments>6</slash:comments><feedburner:origLink>http://www.coderjournal.com/2009/08/fun-with-wacky-javascript-type-comparison/</feedburner:origLink></item><item><title>Recession Proof Your Programming Skills (Listmania-ed)</title><link>http://feedproxy.google.com/~r/coderjournal/~3/Wd0tSmdxz1M/</link><comments>http://www.coderjournal.com/2009/08/recession-proof-your-programming-skills-listmania-ed/#comments</comments><pubDate>Mon, 10 Aug 2009 20:39:02 +0000</pubDate><dc:creator>Nick Berardi</dc:creator><category><![CDATA[Uncategorized]]></category><category><![CDATA[programming skills]]></category><category><![CDATA[recession proof]]></category><guid isPermaLink="false">http://www.coderjournal.com/?p=722</guid><description><![CDATA[Found this great new, well new to me, service on Amazon called Listmania.  It allows you to bundle Amazon products in to a list for easy consumption.  So the first list of Amazon items I thought of trying out as a Listmania list was a post a I did a while ago titled [...]]]></description><content:encoded><![CDATA[<p>Found this great new, well new to me, service on Amazon called Listmania.  It allows you to bundle Amazon products in to a list for easy consumption.  So the first list of Amazon items I thought of trying out as a Listmania list was a post a I did a while ago titled &#8220;<a href="http://www.coderjournal.com/2009/04/recession-proof-your-programming-skills/">Recession Proof Your Programming Skills</a>&#8221;</p>
<blockquote><p>In this economy you have to do everything to keep your skills fresh and current so that employers find you a desirable hire.  I really though the tips provided in<a href="http://www.softwarebyrob.com/2008/12/10/8-ways-to-recession-proof-your-programming-career/"> 8 Ways to Recession-Proof Your Programming Career</a> where spot on when this article came out last year.  And now that the TechRepublic has released <a href="http://blogs.techrepublic.com.com/10things/?p=643">10 kills developers will need in the next 5 years</a>.  I have decided to give you some of my favorite Wrox books that align very well to this TechRepublic article.</p></blockquote>
<p>The Economy may or may not seem so bleek anymore depending on who you talk to, but the message is still the same, keep your skills current and marketable.  That is why I put together the list originally and it is still why I am porting it to <a href="http://www.amazon.com/gp/richpub/listmania/fullview/R3ROGHZ8FDPCZY?tag=coderjournal-20">Listmania</a>.</p>
<h3><a href="http://www.amazon.com/gp/richpub/listmania/fullview/R3ROGHZ8FDPCZY/?tag=coderjournal-20">Click here to check out my &#8220;Recession Proof Your programming Skills&#8221; Listmania list.</a></h3>
<p><em>I will try to keep this up to date with new books I find useful and marketable in the way of programming skills, if you have any comments or suggestions for my list please feel free to leave them below.</em></p>
<p><a target="_blank" href="http://theloungenet.com/feeds/redirect/DOTNETRSS/CJOURNAL/A826FFAE3C748A841CB5B278C9F39A16772DD6F5"><img src="http://theloungenet.com/feeds/img/DOTNETRSS/CJOURNAL/A826FFAE3C748A841CB5B278C9F39A16772DD6F5"></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/coderjournal?a=Wd0tSmdxz1M:NvRoEN5fizE:bcOpcFrp8Mo"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=bcOpcFrp8Mo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=Wd0tSmdxz1M:NvRoEN5fizE:zYSYRoQSaQY"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=zYSYRoQSaQY" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=Wd0tSmdxz1M:NvRoEN5fizE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=Wd0tSmdxz1M:NvRoEN5fizE:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=Wd0tSmdxz1M:NvRoEN5fizE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/coderjournal?i=Wd0tSmdxz1M:NvRoEN5fizE:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=Wd0tSmdxz1M:NvRoEN5fizE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/coderjournal?i=Wd0tSmdxz1M:NvRoEN5fizE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=Wd0tSmdxz1M:NvRoEN5fizE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/coderjournal/~4/Wd0tSmdxz1M" height="1" width="1"/>]]></content:encoded><wfw:commentRss>http://www.coderjournal.com/2009/08/recession-proof-your-programming-skills-listmania-ed/feed/</wfw:commentRss><slash:comments>1</slash:comments><feedburner:origLink>http://www.coderjournal.com/2009/08/recession-proof-your-programming-skills-listmania-ed/</feedburner:origLink></item><item><title>Show CodeRush Xpress Menu in Visual Studio</title><link>http://feedproxy.google.com/~r/coderjournal/~3/zY1Ir3azx4w/</link><comments>http://www.coderjournal.com/2009/08/show-coderush-xpress-menu-in-visual-studio/#comments</comments><pubDate>Wed, 05 Aug 2009 02:30:50 +0000</pubDate><dc:creator>Nick Berardi</dc:creator><category><![CDATA[How To]]></category><category><![CDATA[CodeRush]]></category><category><![CDATA[Xpress]]></category><guid isPermaLink="false">http://www.coderjournal.com/?p=712</guid><description><![CDATA[Recently I have been going back and forth between R# and CodeRush. Right now I am in my CodeRush phase trying out the functionality with CodeRush Xpress, however I found it lacking in the way that you couldn&#8217;t actually change the options that were setup for you by default. This happens in CodeRush Xpress probably [...]]]></description><content:encoded><![CDATA[<p>Recently I have been going back and forth between R# and CodeRush. Right now I am in my CodeRush phase trying out the functionality with <a href="http://devexpress.com/Products/Visual_Studio_Add-in/CodeRushX/">CodeRush Xpress</a>, however I found it lacking in the way that you couldn&#8217;t actually change the options that were setup for you by default. This happens in CodeRush Xpress probably out of an attempt to make the use of CodeRush more simplistic to the Xpress users, or maybe they don&#8217;t want to give all the tweaking options in the free version.  Either way it was annoying because I like some of the features but others just slow me down when I am working through a Remote Desktop connection by constantly tiggering redraws of the Visual Studio interface code window.</p>
<p>Eventually <a href="http://rorybecker.blogspot.com/">Rory Becker</a>, who is a CodeRush fanatic, turned me on to two different way you can access the <em>Options</em> menu of CodeRush Xpress.</p>
<p>The Keyboard Command Way</p>
<blockquote><p><kbd>Shift+Ctrl+Alt+O</kbd>
</p></blockquote>
<p>The Registry Hack Way</p>
<ul>
<li><a href="http://coderjournal.googlecode.com/svn/trunk/Posts/2009/08/ShowMenuCodeRushXpress_x32.reg">Show Menu for CodeRush Xpress (x86)</a></li>
<li><a href="http://coderjournal.googlecode.com/svn/trunk/Posts/2009/08/ShowMenuCodeRushXpress_x64.reg">Show Menu for CodeRush Xpress (x64)</a></li>
</ul>
<p>Hope this helps somebody besides me.</p>
<p><strong>Update:</strong>  Sorry about that had a server configuration mishap for delivering Windows Registry files, I have moved them to <a href="http://code.google.com/p/coderjournal/source/browse/trunk/Posts/2009/08">my Google Code download</a> location.  </p>
<p><a target="_blank" href="http://theloungenet.com/feeds/redirect/DOTNETRSS/CJOURNAL/07627A82007C5A193AAB68BCE5CF9C9F3AD1B89D"><img src="http://theloungenet.com/feeds/img/DOTNETRSS/CJOURNAL/07627A82007C5A193AAB68BCE5CF9C9F3AD1B89D"></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/coderjournal?a=zY1Ir3azx4w:lRULRpTUcwE:bcOpcFrp8Mo"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=bcOpcFrp8Mo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=zY1Ir3azx4w:lRULRpTUcwE:zYSYRoQSaQY"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=zYSYRoQSaQY" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=zY1Ir3azx4w:lRULRpTUcwE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=zY1Ir3azx4w:lRULRpTUcwE:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=zY1Ir3azx4w:lRULRpTUcwE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/coderjournal?i=zY1Ir3azx4w:lRULRpTUcwE:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=zY1Ir3azx4w:lRULRpTUcwE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/coderjournal?i=zY1Ir3azx4w:lRULRpTUcwE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=zY1Ir3azx4w:lRULRpTUcwE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/coderjournal/~4/zY1Ir3azx4w" height="1" width="1"/>]]></content:encoded><wfw:commentRss>http://www.coderjournal.com/2009/08/show-coderush-xpress-menu-in-visual-studio/feed/</wfw:commentRss><slash:comments>8</slash:comments><feedburner:origLink>http://www.coderjournal.com/2009/08/show-coderush-xpress-menu-in-visual-studio/</feedburner:origLink></item><item><title>Hotfix KB 971092 for Visual Studio 2008 SP1 Install Problems</title><link>http://feedproxy.google.com/~r/coderjournal/~3/G-mtsdOewO4/</link><comments>http://www.coderjournal.com/2009/08/hotfix-kb-971092-for-visual-studio-2008-sp1-install-problems/#comments</comments><pubDate>Sat, 01 Aug 2009 21:10:42 +0000</pubDate><dc:creator>Nick Berardi</dc:creator><category><![CDATA[News]]></category><guid isPermaLink="false">http://www.coderjournal.com/?p=708</guid><description><![CDATA[I was bitten by a weird Windows Update problem where update KB971092 would continually install and then keep trying to install even though it successfully completes.  Some or most of you that have Visual Studio 2008 SP1 installed will probably have a similar problem.   So I though I would pass on this information from [...]]]></description><content:encoded><![CDATA[<p>I was bitten by a weird Windows Update problem where update KB971092 would continually install and then keep trying to install even though it successfully completes.  Some or most of you that have Visual Studio 2008 SP1 installed will probably have a similar problem.   So I though I would pass on this information from <a href="http://msmvps.com/blogs/vstsblog/archive/2009/07/29/hotfix-kb-971092-for-visual-studio-2008-sp1-install-problems.aspx">Neno Loje</a> about how to fix it.</p>
<p><img class="size-full wp-image-709 alignright" title="WindowsUpdate" src="http://www.coderjournal.com/uploads/2009/08/WindowsUpdate.jpg" alt="WindowsUpdate" width="124" height="124" align="right" /><strong>Applies to</strong>:</p>
<blockquote><p>Security Update for Microsoft Visual Studio 2008 Service Pack 1 (KB971092)</p></blockquote>
<p><strong>Symptoms</strong>:</p>
<blockquote><p>The update installs successfully and but will be offered again by Windows Update as a new update. This can be repeated indefinitely.</p>
<p>or</p>
<p>the standalone installer tells you that this update &#8220;does not apply, or is blocked by another condition on your system&#8221;.</p></blockquote>
<p><strong>Workaround</strong> (found <a style="color: #006ff7;" href="https://connect.microsoft.com/VisualStudio/feedback/Workaround.aspx?FeedbackID=478117">here</a>):</p>
<ol>
<li>Download the stand-alone version of <a style="color: #006ff7;" href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=294de390-3c94-49fb-a014-9a38580e64cb">VS90SP1-KB971092-x86.exe</a>.</li>
<li>Start the installation VS90SP1-KB971092-x86.exe</li>
<li>Wait for the error message to come up – <strong>do not close the window</strong></li>
<li>Copy the temp. folder where the patch has been unpacked to a new folder, for example onto your desktop.</li>
<li>Close VS90SP1-KB971092-x86.exe that you started in step 2.</li>
<li>Navigate to {Program Files}\Microsoft Visual Studio 9.0\Common7\Tools and find vsvars32.bat.</li>
<li>Change the permissions on the file to allow everyone to edit it.</li>
<li>Start VS90SP1-KB971092-x86.msp from within the saved folder and the process should complete.</li>
<li>You may want to reset permissions that you gave in step 7.</li>
</ol>
<p><a target="_blank" href="http://theloungenet.com/feeds/redirect/DOTNETRSS/CJOURNAL/619545257E68BB50E5333E9270D48FFD9F847AB0"><img src="http://theloungenet.com/feeds/img/DOTNETRSS/CJOURNAL/619545257E68BB50E5333E9270D48FFD9F847AB0"></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/coderjournal?a=G-mtsdOewO4:hz6u5Ev9DQw:bcOpcFrp8Mo"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=bcOpcFrp8Mo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=G-mtsdOewO4:hz6u5Ev9DQw:zYSYRoQSaQY"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=zYSYRoQSaQY" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=G-mtsdOewO4:hz6u5Ev9DQw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=G-mtsdOewO4:hz6u5Ev9DQw:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=G-mtsdOewO4:hz6u5Ev9DQw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/coderjournal?i=G-mtsdOewO4:hz6u5Ev9DQw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=G-mtsdOewO4:hz6u5Ev9DQw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/coderjournal?i=G-mtsdOewO4:hz6u5Ev9DQw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/coderjournal?a=G-mtsdOewO4:hz6u5Ev9DQw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/coderjournal?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/coderjournal/~4/G-mtsdOewO4" height="1" width="1"/>]]></content:encoded><wfw:commentRss>http://www.coderjournal.com/2009/08/hotfix-kb-971092-for-visual-studio-2008-sp1-install-problems/feed/</wfw:commentRss><slash:comments>4</slash:comments><feedburner:origLink>http://www.coderjournal.com/2009/08/hotfix-kb-971092-for-visual-studio-2008-sp1-install-problems/</feedburner:origLink></item></channel></rss>
