<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-37270754</id><updated>2011-11-27T17:22:57.606-06:00</updated><category term='images'/><category term='biztalk'/><category term='education'/><category term='nasa'/><category term='SharpResume'/><category term='continuous integration'/><category term='night owl'/><category term='tools'/><category term='javascript'/><category term='clumsy'/><category term='funny'/><category term='documentation'/><category term='hurt'/><category term='web'/><category term='movies'/><category term='development'/><category term='textpad'/><category term='nant'/><category term='poland'/><category term='methodology'/><category term='oww'/><category term='#Résumé'/><category term='creative commons'/><category term='neat'/><category term='eu'/><category term='star wars'/><category term='c#'/><category term='sleep'/><category term='anti-process'/><category term='social networking'/><category term='robot chicken'/><category term='savings'/><category term='agile'/><category term='shell'/><category term='cruisecontrol'/><category term='sun'/><category term='code structure'/><category term='windows'/><category term='the good life'/><category term='test driven development'/><category term='tdd'/><category term='source control'/><category term='.net'/><category term='professional'/><category term='developer'/><category term='code'/><category term='SchemaInSight'/><category term='crazy talk'/><category term='strings'/><category term='work'/><category term='extreme programming'/><category term='linux'/><category term='vs.net'/><category term='xml'/><category term='dunno'/><category term='sarcasm'/><category term='tech'/><category term='stargate'/><category term='personal'/><category term='wallpaper'/><category term='NStun'/><category term='process'/><category term='culture'/><category term='transformers'/><category term='streaming'/><category term='formatting'/><category term='home improvement'/><category term='music'/><category term='games'/><category term='brain'/><category term='television'/><category term='resume'/><category term='just kidding'/><category term='build management'/><category term='photo'/><category term='blogger'/><category term='frogs'/><category term='world of warcraft'/><category term='interviewing'/><category term='software'/><category term='entertainment'/><category term='history'/><category term='coding'/><category term='unit testing'/><category term='royalty free'/><category term='standards'/><category term='remote desktop'/><category term='regular expressions'/><category term='job hunting'/><category term='ubuntu'/><category term='please link back'/><category term='automation'/><category term='winamp'/><category term='blogging'/><category term='kick me'/><title type='text'>Frog's Brain</title><subtitle type='html'>Michael Hall's Weblog</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>80</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-37270754.post-4449243142886017481</id><published>2008-05-26T10:25:00.001-05:00</published><updated>2008-05-26T10:26:46.138-05:00</updated><title type='text'>Moved to another hosting provider.</title><content type='html'>Moved to &lt;a href="http://frogsbrain.wordpress.com"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-4449243142886017481?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://frogsbrain.wordpress.com' title='Moved to another hosting provider.'/><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/4449243142886017481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=4449243142886017481' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/4449243142886017481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/4449243142886017481'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2008/05/moved-to-another-hosting-provider.html' title='Moved to another hosting provider.'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-270322196429726539</id><published>2008-03-22T11:58:00.003-05:00</published><updated>2008-03-22T12:32:34.960-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stargate'/><category scheme='http://www.blogger.com/atom/ns#' term='brain'/><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><category scheme='http://www.blogger.com/atom/ns#' term='hurt'/><category scheme='http://www.blogger.com/atom/ns#' term='oww'/><title type='text'>Brain Mapping</title><content type='html'>What made me begin to unconsciously type "worlofwarcraft.com" into my internet browser address bar. (really)&lt;br /&gt;&lt;br /&gt;Here's the scenario&lt;br /&gt;&lt;br /&gt;It all starts here.  Reading a nice little &lt;a target="_blank" href="http://thedailywtf.com/Articles/Stargate-Code-of-the-Replicators.aspx" title="DailyWTF: 'Stargate: Code of the Replicators'"&gt;article&lt;/a&gt; about the "faux-code" used on a very entertaining &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Stargate_SG-1" title="Stargate SG-1"&gt;show&lt;/a&gt;, although I like the &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Stargate_Atlantis" title="Stargate Atlantis. Needs more Teal'c (Kind of like Spock, but awesome).'"&gt;spin-off&lt;/a&gt; better.  Because I was reading the article using my RSS feed reader of &lt;a target="_blank" href="http://sage.mozdev.org/" title="Sage"&gt;choice&lt;/a&gt; I only saw a link to the comments on a popular link &lt;a target="_blank" href="http://digg.com/" title="digg"&gt;aggregation site&lt;/a&gt;.  There was only one &lt;a target="_blank" href="http://digg.com/television/Stargate_the_code_behind_the_Replicators" title="Digg: ''. Quoted from the great minds of the internet, &amp;quot;so close to C++ it's actually Javascript, dumb ass&amp;quot;"&gt;comment&lt;/a&gt; on the site, that fully followed a key &lt;a target="_blank" href="http://www.penny-arcade.com/comic/2004/03/19" title="What is the sum of this equation? (Normal Person + Anonymity + Audience)"&gt;law regarding internet anonymity&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Okay, my brain works... strange.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-270322196429726539?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/270322196429726539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=270322196429726539' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/270322196429726539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/270322196429726539'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2008/03/brain-mapping.html' title='Brain Mapping'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-3768929688026662173</id><published>2007-08-17T07:43:00.000-05:00</published><updated>2007-08-17T07:56:59.282-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='documentation'/><title type='text'>Good Documentation</title><content type='html'>I don't think it is a coincidence that my favorite development tools are so well documented.  The only reason they kept my attention long enough probably has more to do with their level of documentation than their level of "coolness".  &lt;br /&gt;&lt;br /&gt;Direct links to documentation for some of my favorite tools.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://confluence.public.thoughtworks.org/display/CCNET/Documentation" target="_blank"&gt;CruiseControl.NET&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.ncover.org/NCoverFAQ.html" target="_blank"&gt;NCover FAQ&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ncover.org/Documentation.html" target="_blank"&gt;NCover&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://nant.sourceforge.net/release/latest/help/" target="_blank"&gt;NAnt&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://nantcontrib.sourceforge.net/release/latest/help/" target="_blank"&gt;NAntContrib&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.ayende.com/Wiki/(S(ogaf1d554wai5orudrd1gp45))/Default.aspx?Page=Rhino+Mocks+Documentation" target="_blank"&gt;Rhino Mocks&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://nunit.com/index.php?p=docHome&amp;r=2.4.2" target="_blank"&gt;NUnit&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mertner.com/confluence/display/MbUnit/Documentation" target="_blank"&gt;MbUnit&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.nlog-project.org/documentation.html" target="_blank"&gt;NLog&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sooda.sourceforge.net/documentation.html" target="_blank"&gt;Sooda&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://svnbook.red-bean.com/" target="_blank"&gt;Subversion&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-3768929688026662173?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/3768929688026662173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=3768929688026662173' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/3768929688026662173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/3768929688026662173'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/08/good-documentation.html' title='Good Documentation'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-7181873398574497634</id><published>2007-07-26T12:37:00.000-05:00</published><updated>2007-07-26T12:40:22.531-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='formatting'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='strings'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>String formatting tips for C#</title><content type='html'>Handy guide that I've perused once or twice for tips on formatting strings in C#.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.stevex.net/index.php/string-formatting-in-csharp/" target="_blank"&gt;String Formatting in C#&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-7181873398574497634?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/7181873398574497634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=7181873398574497634' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/7181873398574497634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/7181873398574497634'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/07/string-formatting-tips-for-c.html' title='String formatting tips for C#'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-3368075144896944697</id><published>2007-07-26T09:18:00.000-05:00</published><updated>2007-07-30T08:49:59.679-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unit testing'/><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='biztalk'/><title type='text'>BizTalk 2004 Links</title><content type='html'>A wealth of useful BizTalk 2004 information can be found at &lt;a href="http://blogs.msdn.com/gzunino/default.aspx" target="_blank"&gt;Gille's WebLog&lt;/a&gt;.&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/gzunino/archive/2004/06/25/166101.aspx" target="_blank"&gt;The flat file strikes back: BizTalk 2004 parsing positional records&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/gzunino/archive/2004/06/16/157373.aspx" target="_blank"&gt;The return of the flat file: Using BizTalk 2004 flat file disassembler&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/gzunino/archive/2004/08/19/217277.aspx" target="_blank"&gt;Selecting the flat file disassembling schema dynamically&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/gzunino/archive/2004/09/21/232629.aspx" target="_blank"&gt;How do I reuse BizTalk 2004 maps outside of BizTalk?&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/gzunino/archive/2004/09/21/232429.aspx" target="_blank"&gt;Format of BizTalk 2004 assemblies: Maps&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;Another good resource that takes one of Gille's posts even further and demonstrates how to unit test a mapper.&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://blogs.rbaconsulting.com/banderson/Trackback.aspx?guid=f388ded1-1fe9-44fe-9982-3d9991ceeb1f" target="_blank"&gt;Unit Test BizTalk Maps via Reflection&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;Automated Build &amp; Deployment&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.traceofthought.net/" target="_blank"&gt;Automated B&amp;D of BizTalk 2004/6 via NAnt extensions.&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-3368075144896944697?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/3368075144896944697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=3368075144896944697' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/3368075144896944697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/3368075144896944697'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/07/biztalk-2004-links.html' title='BizTalk 2004 Links'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-350682835161534249</id><published>2007-07-26T09:05:00.000-05:00</published><updated>2007-07-26T09:13:25.316-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='build management'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='source control'/><title type='text'>Will My Software Project Fail?</title><content type='html'>There are a lot of reasons typically given for software projects failing, poor management, lack of requirements, and lack (or excess) of talent are common reasons I've heard(used) for failed projects that I've witnessed(particpated in).&lt;br /&gt;&lt;br /&gt;Coding Horror has an excellent article that presents 3 alternative reasons that projects may fail that might not be intuitive at first.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codinghorror.com/blog/archives/000917.html" target="_blank"&gt;Will My Software Project Fail?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;CH presents three new pillars of successful software projects.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Version Control&lt;/li&gt;&lt;li&gt;Work Intake Management&lt;/li&gt;&lt;li&gt;Build System&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;These are three things that I've lobbied for in every project I've ever worked on, even when I couldn't articulate what I wanted because I hadn't yet seen it in action.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-350682835161534249?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/350682835161534249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=350682835161534249' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/350682835161534249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/350682835161534249'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/07/will-my-software-project-fail.html' title='Will My Software Project Fail?'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-948659398365600890</id><published>2007-07-23T20:44:00.000-05:00</published><updated>2007-07-23T20:47:06.729-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='regular expressions'/><title type='text'>VS.Net: Trim EOL White Space</title><content type='html'>Regular expressions are great.  Little strings of yummy helpfulness.&lt;br /&gt;&lt;br /&gt;Here's a little regex that can be used to trim all some or all of your trailing whitespace.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;code&gt;:b+$&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Just pass nothing for the replacement.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-948659398365600890?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/948659398365600890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=948659398365600890' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/948659398365600890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/948659398365600890'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/07/vsnet-trim-eol-white-space.html' title='VS.Net: Trim EOL White Space'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-503992803640889385</id><published>2007-07-23T09:32:00.000-05:00</published><updated>2007-07-23T09:35:03.212-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='remote desktop'/><title type='text'>Shared Server Etiquette</title><content type='html'>&lt;OL&gt;&lt;LI&gt;&lt;B&gt;Log off&lt;/B&gt;&lt;P&gt;Don't stay logged into shared machines, log off when you are done. The performance overhead of multiple logged in users is bad enough when we're all working, but do we really need 4 instances of ScrnSve.exe running too? Also, if you're logged in but unavailable then managing the machine is more difficult if a reboot needs to be done or other system maintenance. And for Knuth's sake, please don't stay logged in over night.&lt;/P&gt;&lt;/LI&gt;&lt;br /&gt;&lt;LI&gt;&lt;B&gt;Disable the screensaver.&lt;/B&gt; &lt;br /&gt;&lt;P&gt;Sure, we can't be constantly logging in and out, there are times we will be working for extended periods of time on the shared server and may be pulled away during that time. No sense in running another application whose only purpose in life is to burn cycles and render pretty pictures when no one is looking.&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-503992803640889385?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/503992803640889385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=503992803640889385' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/503992803640889385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/503992803640889385'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/07/shared-server-etiquette.html' title='Shared Server Etiquette'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-5819661767786517443</id><published>2007-07-22T20:48:00.001-05:00</published><updated>2007-07-23T07:49:31.003-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='textpad'/><category scheme='http://www.blogger.com/atom/ns#' term='regular expressions'/><title type='text'>TextPad Regular Expressions: Replace Leading Whitespace with '&amp;nbsp;'</title><content type='html'>&lt;a href="http://www.textpad.com" target="_blank"&gt;TextPad&lt;/a&gt; is my text-editor of choice.  It's simple, fast and lightweight.  Plus it supports regular expressions and wildcard searches.&lt;br /&gt;&lt;br /&gt;When preparing a post for upload onto the site I often need to replace the leading whitespace with HTML encoded whitespace.  This replacement will have to be run for leading whitespace character you wish to replace, but don't worry TextPad will let you know when there are no more replacements to be made.&lt;br /&gt;&lt;br /&gt;Inside the TextPad Replace dialog ... &lt;i&gt;(Don't copy the quote marks!)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Find what:&amp;nbsp;&amp;nbsp;"&lt;code&gt;^\(\(&amp;amp;nbsp\;\)*\)[[:space:]]&lt;/code&gt;"&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Replace with:&amp;nbsp;&amp;nbsp;"&lt;code&gt;\1\&amp;amp;nbsp;&lt;/code&gt;"&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;To restore the whitespaces use the follow expression.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Find what:&amp;nbsp;&amp;nbsp;"&lt;code&gt;^\(\([[:space:]]\)*\)&amp;amp;nbsp\;&lt;/code&gt;"&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Replace with:&amp;nbsp;&amp;nbsp;"&lt;code&gt;\1&amp;nbsp;&lt;/code&gt;"&lt;/b&gt; &lt;-- Notice that there is a single space character after the \1.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-5819661767786517443?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/5819661767786517443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=5819661767786517443' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/5819661767786517443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/5819661767786517443'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/07/textpad-regular-expressions-replace.html' title='TextPad Regular Expressions: Replace Leading Whitespace with &apos;&amp;amp;nbsp;&apos;'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-4843210852573690808</id><published>2007-07-19T16:40:00.000-05:00</published><updated>2007-07-19T16:47:51.567-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test driven development'/><category scheme='http://www.blogger.com/atom/ns#' term='unit testing'/><category scheme='http://www.blogger.com/atom/ns#' term='extreme programming'/><title type='text'>TDD?  You've got to be kidding me?</title><content type='html'>Just taking another peek over to the the Sun's side of the Sun/Microsoft fence and checking the color of their grass.  &lt;br /&gt;&lt;br /&gt;Another tool for testing the reliability of your tests is &lt;a href="http://jester.sourceforge.net/" target="_blank"&gt;Jester&lt;/a&gt;.  This tool will actually tweak your code as your unit tests are executed to see how well the tests hold up to changes.  &lt;br /&gt;&lt;br /&gt;There's already a C# port named &lt;a href="http://nester.sourceforge.net/" target="_blank"&gt;Nester&lt;/a&gt;.  I'm definitely going to try to integrate this into my CI process.&lt;br /&gt;&lt;br /&gt;I have to admit, this isn't going to be funny (heh, &lt;a href="http://en.wikipedia.org/wiki/Fozzy_Bear" target="_blank"&gt;wocka-wocka-wocka&lt;/a&gt;) the first couple times but it'll be interesting to see where it takes my code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-4843210852573690808?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/4843210852573690808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=4843210852573690808' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/4843210852573690808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/4843210852573690808'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/07/tdd-youve-got-to-be-kidding-me.html' title='TDD?  You&apos;ve got to be kidding me?'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-3117370699082780371</id><published>2007-07-19T16:04:00.000-05:00</published><updated>2007-07-19T16:35:05.634-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test driven development'/><category scheme='http://www.blogger.com/atom/ns#' term='unit testing'/><category scheme='http://www.blogger.com/atom/ns#' term='extreme programming'/><title type='text'>If yer code ain't tested, the waterfallists win.</title><content type='html'>Just reporting on untested code is nothin'.  How about a tool that *removes* untested code.&lt;br /&gt;&lt;br /&gt;Check out the oh-so-provocatively named coverage tool, &lt;a href="http://docs.codehaus.org/x/nC0" target="_blank"&gt;Guantanamo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;When Guantanamo detects untested code it will actually remove it from a working copy of the codebase.  C'mon, if you want to move from the foo-foo world of XP and into the hardcore world Mountain Dew level of extreme it should remove the code from source control.  Currently the tool is only available in the Java world, but with most of the XP tools stack (ant, junit, cruisecontrol, jcover) will eventually find it's way into the C# world.&lt;br /&gt;&lt;br /&gt;If you're wondering about the quality of your unit tests, and are in the Java world, check out &lt;a href="http://docs.codehaus.org/x/oCE" target="_blank"&gt;Ashcroft&lt;/a&gt;.  The same guy who gave us Guantanamo also created this tool for analyzing your unit tests.  By checking your tests against a set of guidelines your testing practices become more focused and streamlined.  &lt;br /&gt;&lt;br /&gt;They are building a 10 Commandments of Unit Tests, here's a direct quote from their site.&lt;br /&gt;&lt;blockquote&gt;&lt;ol&gt;&lt;li&gt;I am the class being tested. Thou shalt not test any other class but me.&lt;/li&gt;&lt;li&gt;[Thou shalt write isolated tests]&lt;/li&gt;&lt;li&gt;[Thou shalt not access files during unit tests]&lt;/li&gt;&lt;li&gt;[Thou shalt not write two tests which depend upon each other]&lt;/li&gt;&lt;/ol&gt;&lt;/blockquote&gt;&lt;br /&gt;This is good stuff, and I'm looking forward to more of these kinds of tools in the .NET world.  Sure we have VS.NET and it's a great tool, but it seems like everything we have is clones of stuff from the Java universe.  Are there any tools really unique to .NET that didn't originate as a direct reimplementation of a Java tool?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-3117370699082780371?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/3117370699082780371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=3117370699082780371' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/3117370699082780371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/3117370699082780371'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/07/if-yer-code-aint-tested-waterfallists.html' title='If yer code ain&apos;t tested, the waterfallists win.'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-313103114055293607</id><published>2007-07-16T22:41:00.000-05:00</published><updated>2007-07-16T23:12:13.402-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='neat'/><title type='text'>Know what's cool?  Blogging from your installer is cool.</title><content type='html'>The pendulum is swinging back towards Linux again for me.  As my wife has noticed and much to her irritation, every couple months I'll take another shot at replacing my Microsoft... er, I misspelled that, I meant Micro$haft (now I'm 133t), operating systems with one of the more popular Linux distributions.  Over the years I've tried Red Hat (v4 was my first attempt), SuSE, Mandrake, Lindows (I think it's now called Linspire), Caldera (now SCO, those bastards) and an old Corel distribution.  Mostly with varied levels of failure.  Until Red Hat started the Fedora project, most of my attempts at converting to Linux we immediate dismal failures at best.  There was always some level of ridiculous flakiness or some quirk that would irritate me enough to throw my hands up and run back to the known-devil that is Windows.  &lt;br /&gt;&lt;br /&gt;My current experiment is with Ubuntu 7.04, installed with the DVD included in a Linux Format magazine.  The magazine is an excellent read and worth picking up even if you're a hardcore MS developer.  But to make their magazine even cooler, each issue contains a content disc that usually has the latest version of several distributions.  It's much easier just to spend the $15 and read the magazine while the installation chugs along, than to fight with downloading an ISO and discovering it was corrupt only after you began the install.  But the magazine isn't why I'm blogging.  I'm blogging because I am so throughly blown away by the Ubuntu installation experience.  &lt;br /&gt;&lt;br /&gt;Ubuntu has an amazing installer.  They load the operating system as a live cd, basically running the OS directly from the DVD.  You can then play around with the distribution before you fully commit to installing the OS, and if you decide to commit you just click the "install" icon on the desktop.  A few more clicks through the wizard and you are on your way to Ubuntuy Linux goodness.  The really fun part is that you can surf the web while the installation is running because the live cd loads all the drivers automatically.  So I was able to blog about how awesome the Ubuntu installation experience is while the installation is running! Neat!  Funny that installing an OS could be easier than installing some common desktop application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-313103114055293607?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/313103114055293607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=313103114055293607' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/313103114055293607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/313103114055293607'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/07/know-whats-cool-blogging-from-your.html' title='Know what&apos;s cool?  Blogging from your installer is cool.'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-8653190506205170846</id><published>2007-07-13T14:51:00.000-05:00</published><updated>2007-07-13T14:54:17.831-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='savings'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Save money on Microsoft tools and systems.</title><content type='html'>&lt;a href="https://partner.microsoft.com/40016455" target="_blank"&gt;Microsoft Action Pack&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://partner.microsoft.com/40011351" target="_blank"&gt;Microsoft Empower for ISV's&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-8653190506205170846?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/8653190506205170846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=8653190506205170846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/8653190506205170846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/8653190506205170846'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/07/save-money-on-microsoft-tools-and.html' title='Save money on Microsoft tools and systems.'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-6016439304435547470</id><published>2007-07-07T13:57:00.000-05:00</published><updated>2007-07-07T14:08:47.061-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='streaming'/><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>Save streaming music to disk from WinAmp using Streamripper</title><content type='html'>&lt;a href="http://streamripper.sourceforge.net/" target="_blank"&gt;Streamripper&lt;/a&gt; is a plug-in for WinAmp 5.0 that will allow you to save streaming music to disk.  Simply download the latest version and run the installer.  When you start WinAmp an additional window titled "STREAMRIPPER" will be open as well.  While listening to a stream that you want to record, click the &lt;b&gt;start&lt;/b&gt; button in the Streamripper window.  StreamRipper will beging to save the files in a folder on your desktop by default.  To change the location of the save folder, click the &lt;b&gt;config&lt;/b&gt; button in the Streamripper window, select the &lt;b&gt;File&lt;/b&gt; tab and change the output directory to wherever you want Streamripper to save to.&lt;br /&gt;&lt;br /&gt;A thorough tutorial on how to use Streamripper with WinAmp can be found &lt;a href="http://streamripper.sourceforge.net/tutorialplugin.php" target="_blank"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-6016439304435547470?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/6016439304435547470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=6016439304435547470' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/6016439304435547470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/6016439304435547470'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/07/save-streaming-music-to-disk-from.html' title='Save streaming music to disk from WinAmp using Streamripper'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-2340185198037988901</id><published>2007-07-07T13:19:00.000-05:00</published><updated>2007-07-08T19:56:47.141-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='social networking'/><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='kick me'/><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><title type='text'>How to automatically embed DotNetKicks "kick it" links into your Blogger posts.</title><content type='html'>&lt;a href="http://www.dotnetkicks.com" target="_blank"&gt;DotNetKicks&lt;/a&gt; is a social bookmarking site, kind of like &lt;a href="http://www.digg.com" target="_blank"&gt;Digg&lt;/a&gt; but targeted at .NET developers.  The stories are moderated using a democratic system where articles get votes, called kicks.  The more kicks you get the higher up you move in the story hierarchy.  When a story is submitted it starts in a pending stories queue.  If you get enough kicks your story will be moved from the pending stories queue to the front page.  This might all sound like fun and games but what really perked my ears up was their integration with Google's AdSense to earn money for submitted stories.  DotNetKicks will split 50% of the ad revenue for clicks through to stories you submit.  Nice.&lt;br /&gt;&lt;br /&gt;The trick is getting submitted, if your readers aren't aware of DotNetKicks they won't know to submit and/or Kick your articles.  You need a way to let them know about the site, but without being crass about it.  I didn't want to manually submit my post every time I blogged, so I used Blogger's template system to help do it for me.  &lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;p&amp;gt;&amp;lt;a expr:href='"http://www.dotnetkicks.com/submit/?url=" + data:post.url + "&amp;amp;title=" + data:post.title' expr:id='data:widget.instanceId + "_kickit"'&amp;gt;&amp;lt;img alt='Submit this story to DotNetKicks' expr:src='"http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=" + data:post.url'/&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I created a tag that I inserted into my Blogger posts template that will automatically display the number of kicks the article has received so far.  If you click on the link and the story hasn't already been submitted you will automatically be redirected to DotNetKicks article submission page with the link and title already filled out for you.  If the story has already been submitted your vote will be added to the kicks counter.&lt;br /&gt;&lt;br /&gt;To add the tag into your post template go to the Template tab under your Blogger accounts Customization section.  Select "Edit HTML" and check the "Expand Widget Templates" check box.  Scan the template until you find a line that looks something like "&lt;code&gt;&amp;lt;p&amp;gt;&amp;lt;data:post.body/&amp;gt;&amp;lt;/p&amp;gt;&lt;/code&gt;". That is where the Blogger templating engine inserts the body of your post.  I inserted my tag to appear directly below the body of my posts but you can play around with whatever position you like by using the "Preview" button.  You'll have to save the template to apply the changes when you are satisfied.&lt;br /&gt;&lt;br /&gt;PS, I used the above steps to post this article to DotNetKicks.&lt;br /&gt;&lt;br /&gt;Follow up:  The URL changed for submitting links, the snippet in the article has been updated to output the correct link.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-2340185198037988901?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/2340185198037988901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=2340185198037988901' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2340185198037988901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2340185198037988901'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/07/how-to-automatically-embed-dotnetkicks.html' title='How to automatically embed DotNetKicks &quot;kick it&quot; links into your Blogger posts.'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-2802546204738601729</id><published>2007-07-06T20:32:00.000-05:00</published><updated>2007-07-09T19:58:49.062-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='just kidding'/><category scheme='http://www.blogger.com/atom/ns#' term='developer'/><category scheme='http://www.blogger.com/atom/ns#' term='sarcasm'/><category scheme='http://www.blogger.com/atom/ns#' term='source control'/><title type='text'>Programming without source control is like coding without pants.</title><content type='html'>Sure, I can code with no pants on.  But if I'm working on a team it's better if I put on some nice slacks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-2802546204738601729?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/2802546204738601729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=2802546204738601729' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2802546204738601729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2802546204738601729'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/07/programming-without-source-control-is.html' title='Programming without source control is like coding without pants.'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-4616518582706554106</id><published>2007-07-04T23:18:00.000-05:00</published><updated>2007-07-04T23:45:06.659-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='transformers'/><category scheme='http://www.blogger.com/atom/ns#' term='movies'/><category scheme='http://www.blogger.com/atom/ns#' term='funny'/><title type='text'>One Shall Stand, One Shall Fall</title><content type='html'>I just got back from seeing the &lt;a href="http://www.transformersmovie.com/" target="_blank"&gt;Transformers movie&lt;/a&gt;.  All I have to say about that is, "Mr. Bay I am sorry for doubting you."  This is what summer popcorn adventure movies are supposed to be.  Simple, straight-forward action, driving music and just enough humor and light romance to keep it fun.  And gigantic robots smashing the shit out of each other.&lt;br /&gt;&lt;br /&gt;Personally, I have quite a history with the Transformers franchise.  The first thing I ever purchased with my own money was a first generation &lt;a href="http://en.wikipedia.org/wiki/Optimus_Prime#Transformers:_Generation_1" target="_blank"&gt;Optimus Prime&lt;/a&gt;.  I had to do chores at my father's truck shop for several weekends before I saved up enough money.  $13.00 American.  As with all children's fancies I eventually traded him for a new Rodimus Prime around the time of the first Transformers movie.  Big mistake, Rodimus was never as much fun as Optimus.&lt;br /&gt;&lt;br /&gt;I'm pretty sure I did more than my fair share of whining and wheedling whenever my mother got too close to the toy section, but my biggest showdown with my mom was over the Transformers movie.  We were at a Jewel that had a video rental center towards the front of the store that was carrying the object of my desire.  I don't recall the entire event completely, but I'm sure it went something like this.  As my mother entered the cashiers line to pay for our daily bread when I began my attack.  She was informed of the movie and just how important it was, but she resisted.  As she packed up our groceries and moved out towards the door I realized the object of my desires was not in our possession, I became frantic.  I remember stomping and crying and yelling that I was being abused and she probably didn't love me or care about me.  She kept her will and I didn't get the movie that day, but I like to think I put up quite the scene.  I have to admire her fortitude, I was quite the showman.&lt;br /&gt;&lt;br /&gt;Autobots, transform and roll out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-4616518582706554106?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/4616518582706554106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=4616518582706554106' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/4616518582706554106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/4616518582706554106'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/07/one-shall-stand-one-shall-fall.html' title='One Shall Stand, One Shall Fall'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-7727927156564183720</id><published>2007-07-02T22:19:00.001-05:00</published><updated>2007-07-02T22:43:08.612-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code structure'/><category scheme='http://www.blogger.com/atom/ns#' term='standards'/><title type='text'>Naming Conventions for Project and Solution Folders</title><content type='html'>&lt;b&gt;Small Solution Structures&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If the project space is small I'll just name the folder and solution to match the fully-qualified namespace.&lt;br /&gt;&lt;br /&gt;Folder&lt;br /&gt;&lt;code&gt;c:\FrogsBrain.MyFancyPants&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Solution&lt;br /&gt;&lt;code&gt;c:\FrogsBrain.MyFancyPants\FrogsBrain.MyFancyPants.sln&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Namespace&lt;br /&gt;&lt;code&gt;FrogsBrain.MyFancyPants&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Larger Solution Structures&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If the solution directory tree is very deep or there are many projects are under the root namespace I will break the solution folders up to remove redundant uses of the root name.&lt;br /&gt;&lt;br /&gt;Folder&lt;br /&gt;&lt;code&gt;c:\FrogsBrain\MyFancyPants&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Solution&lt;br /&gt;&lt;code&gt;c:\FrogsBrain\MyFancyPants\MyFancyPants.sln&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Namespace&lt;br /&gt;&lt;code&gt;FrogsBrain.MyFancyPants&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This will help keep to avoid errors when a path can get too long and wreak havoc with some source control tools.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Project Structures&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The project names will follow suit, leaving out the name of the solution.&lt;br /&gt;&lt;br /&gt;Folder&lt;br /&gt;&lt;code&gt;c:\FrogsBrain.MyFancyPants\Library&lt;/code&gt;&lt;br /&gt;OR&lt;br /&gt;&lt;code&gt;c:\FrogsBrain\MyFancyPants\Library&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Project&lt;br /&gt;&lt;code&gt;c:\FrogsBrain.MyFancyPants\Library\Library.csproj&lt;/code&gt;&lt;br /&gt;OR&lt;br /&gt;&lt;code&gt;c:\FrogsBrain\MyFancyPants\Library\Library.csproj&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Namespace&lt;br /&gt;&lt;code&gt;FrogsBrain.MyFancyPants.Library&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Output&lt;br /&gt;&lt;code&gt;FrogsBrain.MyFancyPants.Library.dll&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The exception is that the project output will be the fully-qualified name of the project.  This makes identifying the assembly easier and prevent collision of names like &lt;code&gt;Library.dll&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Folders Not Divided By Namespace&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Inside of projects I try to follow the same structure but if a folder is not to be included in a namespace or I want to group some files without changing the namespace structure I will create a folder with a "_" prefix.&lt;br /&gt;&lt;br /&gt;Project&lt;br /&gt;&lt;code&gt;c:\FrogsBrain\MyFancyPants\Library\Library.csproj&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Folders&lt;br /&gt;&lt;code&gt;c:\FrogsBrain\MyFancyPants\Library\_build&lt;/code&gt;&lt;br /&gt;&lt;code&gt;c:\FrogsBrain\MyFancyPants\Library\_configuration&lt;/code&gt;&lt;br /&gt;&lt;code&gt;c:\FrogsBrain\MyFancyPants\Library\_documentation&lt;/code&gt;&lt;br /&gt;&lt;code&gt;c:\FrogsBrain\MyFancyPants\Library\_contracts\ISomeView.cs&lt;/code&gt;&lt;br /&gt;&lt;code&gt;c:\FrogsBrain\MyFancyPants\Library\_service\ISomeService.cs&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Namespace&lt;br /&gt;&lt;code&gt;FrogsBrain.MyFancyPants.Library&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Output&lt;br /&gt;&lt;code&gt;FrogsBrain.MyFancyPants.Library.dll&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;All files inside of "_" prefix folders are considered to be in the same namespace as their parent folder.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;I've tried variations of these structures but will be implementing this as the standard structure for all projects I am responsible for in the future.  It's the cleanest and easiest to manage layout I've worked with and has grown from experimentation over a couple years.  So, if you look at some of my code and it doesn't already follow this pattern it will eventually.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-7727927156564183720?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/7727927156564183720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=7727927156564183720' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/7727927156564183720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/7727927156564183720'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/07/naming-conventions-for-project-and.html' title='Naming Conventions for Project and Solution Folders'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-5878490152002097440</id><published>2007-07-02T21:40:00.001-05:00</published><updated>2007-07-02T22:18:56.836-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nant'/><category scheme='http://www.blogger.com/atom/ns#' term='cruisecontrol'/><category scheme='http://www.blogger.com/atom/ns#' term='continuous integration'/><category scheme='http://www.blogger.com/atom/ns#' term='source control'/><title type='text'>Structuring NAnt Buildfiles For CCNet builds.</title><content type='html'>I get all verklempt over automated builds.  The usefulness of scripting your builds and running them on an automated system cannot be overstated. Period.&lt;br /&gt;&lt;br /&gt;Preventing bloat and keeping your builds in sync with the code base is difficult if you don't keep them close.  Typically code will be split into separate files to make it more maintainable, build files are no different.  I've found that a single build file for anything but the simplest project can grow very unwieldy quickly but by keeping only one coordinating build file at the solution level and splitting the builds up by project, automated builds can be easier to implement and manage.  Also, by keeping the files alongside the code they are the building the builds stay in sync with the code they are building.&lt;br /&gt;&lt;br /&gt;For example, I have a solution containing 3 projects.  One is an executable, two are libraries.  The folder structure and the naming of the solutions typically follows the structure of the namespaces.&lt;br /&gt;&lt;br /&gt;Let's work from a root folder named 'source' sitting on &lt;code&gt;C:&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;c:\source&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Inside of here I have a solution folder named FrogsBrain.MyFancyPants, the solution will match the name of the folder.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;c:\source\FrogsBrain.MyFancyPants\FrogsBrain.MyFancyPants.sln&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I'll go ahead and add my standard folder to hold my master build script.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;c:\source\FrogsBrain.MyFancyPants\_build\FrogsBrain.MyFancyPants.build&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The primary concern of this build file will be to call the project builds in the correct order and perform any global configuration for those projects.&lt;br /&gt;&lt;br /&gt;Now I will build the project folders.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;c:\source\FrogsBrain.MyFancyPants\Library\Library.csproj&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And this too will contain a folder for it's respective build file.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;c:\source\FrogsBrain.MyFancyPants\Library\_build\Library.build&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The pattern will be repeated for the other two projects.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;c:\source\FrogsBrain.MyFancyPants\Library\UI.csproj&lt;/code&gt;&lt;br /&gt;&lt;code&gt;c:\source\FrogsBrain.MyFancyPants\Library\_build\UI.build&lt;/code&gt;&lt;br /&gt;&lt;code&gt;c:\source\FrogsBrain.MyFancyPants\Library\Tests.csproj&lt;/code&gt;&lt;br /&gt;&lt;code&gt;c:\source\FrogsBrain.MyFancyPants\Library\_build\Tests.build&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;VS.Net Solutions can hold items that are not inside a project.  Unfortunately, whenever you just add a Solution Item, VS.Net will ignore the folder structure and link to the item directly underneath the solution name.  To imitate your physical folder inside your solution, add a new Solution Folder and name it '_build' to match your physical folder, then add the master build file as a Solution Item inside that folder.&lt;br /&gt;&lt;br /&gt;Now your VS.Net Solution will look like...&lt;br /&gt;&lt;br /&gt;&lt;code&gt;FrogsBrain.MyFancyPants&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_build&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FrogsBrain.MyFancyPants.build&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Library&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_build&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Library.build&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UI&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_build&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UI.build&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Tests&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_build&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Tests.build&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now your build files will be added to source control and versioned alongside the code they are building.  This will make executing automated builds easier because the location and naming of the build files will be standardized, making the process easier and more repeatable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-5878490152002097440?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/5878490152002097440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=5878490152002097440' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/5878490152002097440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/5878490152002097440'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/07/structuring-nant-buildfiles-for-ccnet.html' title='Structuring NAnt Buildfiles For CCNet builds.'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-3903001746694244623</id><published>2007-07-02T20:29:00.000-05:00</published><updated>2007-07-02T21:39:49.012-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='developer'/><category scheme='http://www.blogger.com/atom/ns#' term='professional'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='source control'/><title type='text'>Expanding My Source Control Horizons.</title><content type='html'>I have really enjoyed using &lt;a href="http://www.sourcegear.com" target="_blank"&gt;SourceGear&lt;/a&gt;'s Vault source control server for all my personal development needs for quite a while and I have been nothing but happy with them, I need to expand my horizons.&lt;br /&gt;&lt;br /&gt;What I really like about SourceGear, aside from their excellent products, is that they seem to really get how to cater to the small, independent software developer.  By providing a free single-user license they put themselves within reach of the developer who could not otherwise afford their product.  They also are owned by an individual who really seems to know how to communicate with developers on their level. Through his &lt;a href="http://software.ericsink.com/" target="_blank"&gt;blog&lt;/a&gt; about the daily issues of his software firm and excellent book, &lt;a href="http://www.amazon.com/gp/product/1590596234?ie=UTF8&amp;tag=frosbra0d-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1590596234"&gt;Business of Software&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=frosbra0d-20&amp;l=as2&amp;o=1&amp;a=1590596234" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;, which I own and recommend picking up.  Also, they support developers desire to extend their products with an automation API and a set of NAnt extensions.  &lt;br /&gt;&lt;br /&gt;But comfort breeds complacency.  I need to try new stuff and see what's out there.  &lt;br /&gt;&lt;br /&gt;The world of source control tools has seen a surge of growth and even better, competition over the past couple years.  The list of actively developed source controls tools, that are within the reach of a mere mortal developer, has grown tremendously and the choices are all very attractive.&lt;br /&gt;&lt;br /&gt;So, I've decided to play around with a couple vendors that have licenses that appeal to me.  So here's a brief description of what I want in terms of features and licensing.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Cheap, or at least reasonably priced, since I'm not writing packaged software for sale at this point, I'd like a vendor who has discounted licenses for open-source software developers and teams.  I like to constantly merge/check-in my code to the repository so having to break flow by leaving the comfort of VS.Net is not desirable.  Also, I don't like having to memorize the command-line utility, I am a GUI brat and although I've worked with services and console apps for years I prefer managing the server via some form of GUI, web-based or standalone application doesn't matter.  There also needs to be the ability to integrate with CruiseControl.NET and NAnt.  Also, labeling needs to be easy, branching and merging of branches should be simple operations.  The creation of repositories and working structures needs to be painless.  Checkins needs to be atomic and transactional, individual pieces of changelists need to be easily rolled back and commit failures cannot corrupt the repository.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I know that my needs are very MSDevcentric.  Hey, it's my list, if you want stuff for whatever platform you work in then that's your wish-list.  So basing my requirements off that list I've looked around and have picked a couple tools that I am going to evaluate and report on before I decide whether to just stick with Vault or begin using another tool for my everyday use.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Perforce&lt;/b&gt;&lt;p&gt;Very attractive open-source developer friendly licensing.  An excellent book that covers Perforce as a tool is &lt;a href="http://www.amazon.com/gp/product/0321332059?ie=UTF8&amp;tag=frosbra0d-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0321332059"&gt;The Build Master&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=frosbra0d-20&amp;l=as2&amp;o=1&amp;a=0321332059" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt; which I own and have read.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Subversion&lt;/b&gt;&lt;p&gt;CollabNet binaries, can't beat the license, FREE!  I don't own this one yet but will be ordering it from Amazon.  &lt;a href="http://www.amazon.com/gp/product/0596004486?ie=UTF8&amp;tag=frosbra0d-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0596004486"&gt;Version Control with Subversion&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=frosbra0d-20&amp;l=as2&amp;o=1&amp;a=0596004486" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Visual Source Safe 6/2005&lt;/b&gt;&lt;p&gt;From personal and painful experience, "Blech".  I inherited it at my job but it's better than everyone working off a shared folder.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;SourceGear Vault&lt;/b&gt;&lt;p&gt;What I currently use, but will list it's merits.  Vault is also covered in &lt;a href="http://www.amazon.com/gp/product/078214327X?ie=UTF8&amp;tag=frosbra0d-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=078214327X"&gt;Coder to Developer&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=frosbra0d-20&amp;l=as2&amp;o=1&amp;a=078214327X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;, which I read cover-to-cover but then gave away as a gift to an excellent Agilist developer when he moved on to another company.  Also, I think it's where I first heard about Vault.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Team Server&lt;/b&gt;&lt;p&gt;I love me some CodePlex, best place for MS-based OSS projects I know of but I'm going to focus on the SCM aspect.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Surround SCM&lt;/b&gt;&lt;p&gt;The current likely candidate for replacing VSS at work.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;As I work through the different tools for the next couple weeks I'll update on my experiences using those tools in my day-to-day development tasks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-3903001746694244623?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/3903001746694244623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=3903001746694244623' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/3903001746694244623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/3903001746694244623'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/07/expanding-my-source-control-horizons.html' title='Expanding My Source Control Horizons.'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-3598695840872824057</id><published>2007-06-27T19:59:00.000-05:00</published><updated>2007-07-09T19:59:20.735-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='crazy talk'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='just kidding'/><category scheme='http://www.blogger.com/atom/ns#' term='process'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='sarcasm'/><title type='text'>Tsst.</title><content type='html'>Every wonder what career a character like &lt;a href="http://en.wikipedia.org/wiki/Cartman" target="_blank"&gt;Cartman&lt;/a&gt; might gravitate towards when he grows up?  If you said Project Manager then you probably work as a developer too.  Pushy, whiny, demanding, self-centered and glad to criticize you while you are working.  &lt;br /&gt;&lt;br /&gt;Well, the trick is to assert your dominance and become the alpha dev of your team.  Not that you want their job, just that you need to assert that you are a confident professional.  But unlike Cartman's mom, you can't actually pinch your PM's in the neck.  What you can do is assert your own authori-tay.  &lt;br /&gt;&lt;br /&gt;If your PM has as much willpower to control work intake as a greedy little piggy then you need to take action. Tsst! They need to flip the words around in their title and learn that if they don't want to look bad they need to "manage projects".  It's not your fault they promised that the invoicing changes, website updates, database optimization, customer xyz's customizations and anything else they see lying on the ground while walking to their desk, would all be done by Friday; it's theirs.  Sit down with them, list the projects they want to accomplish and figure out what you can finish by Friday.  Then work out what it will take to accomplish the entire list.  They can then take that to whoever they swore their first born to about that Friday deadline and take their lumps.  Don't work overtime just because they cry "but maaa-aam, I want you doo eet, whaaa!".  You are only reinforcing negative behavior.  Overtime should only be allowed in the case of actual emergencies and by emergency I mean that space aliens and the government are somehow involved.  &lt;br /&gt;&lt;br /&gt;Pretty soon they will get used to actually working WITH you to plan their projects.  And with patience and proper manager training, you will win the war and find yourself in an agile shop without a single shot being fired*.  &lt;br /&gt;&lt;br /&gt;*Or you'll be fired. This is insanity, I am an insane person.  If this works for anyone then they should get their own television show.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-3598695840872824057?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://en.wikipedia.org/wiki/Tsst' title='Tsst.'/><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/3598695840872824057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=3598695840872824057' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/3598695840872824057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/3598695840872824057'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/06/tsst.html' title='Tsst.'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-1788624554687438618</id><published>2007-06-27T19:49:00.000-05:00</published><updated>2007-06-27T19:59:20.808-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='process'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><title type='text'>Clumsy Development</title><content type='html'>Basically it's the &lt;a href="http://www.seinfeldscripts.com/TheOpposite.htm" target="_blank"&gt;George Costanza&lt;/a&gt; model of software development.  The only requirement is to know the vocabulary, not that you need to know what the words mean though.&lt;br /&gt;&lt;br /&gt;For example.&lt;br /&gt;&lt;br /&gt;Agile says to not have constantly changing priorities while expecting your developers to change on a dime.  &lt;br /&gt;&lt;br /&gt;Clumsy says, the more projects the better, what else are the developers going to do with their time?  Test, bah!&lt;br /&gt;&lt;br /&gt;Agile says to keep meetings to a minimum.&lt;br /&gt;&lt;br /&gt;Clumsy says that whoever passes out from lack of oxygen first wins.&lt;br /&gt;&lt;br /&gt;Agile cares about the developer's quality of life and acknowledges that it is important for the long term success of the project.&lt;br /&gt;&lt;br /&gt;Clumsy says "Whip the horse until it's dead." (This I have on reliable hearsay was an actual statement made by someone with a very fancy title and doors on his office.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-1788624554687438618?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/1788624554687438618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=1788624554687438618' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/1788624554687438618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/1788624554687438618'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/06/clumsy-development.html' title='Clumsy Development'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-7266810887392683641</id><published>2007-06-27T19:42:00.000-05:00</published><updated>2007-07-08T20:02:43.406-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='process'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='anti-process'/><category scheme='http://www.blogger.com/atom/ns#' term='clumsy'/><title type='text'>Heroic Developer, the Saga Continues.</title><content type='html'>Continued from &lt;a href="http://frogsbrain.blogspot.com/2007/06/heroic-developer.html"&gt;Heroic Developer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;*Deep Breath* If you find yourself working on some half-baked idea concocted by your project manager as they were on their way out the door at a 4:55 PM until midnight for more than zero nights in a row. Then you might be a Heroic Developer. *pant*&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-7266810887392683641?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://frogsbrain.blogspot.com/2007/06/heroic-developer.html' title='Heroic Developer, the Saga Continues.'/><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/7266810887392683641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=7266810887392683641' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/7266810887392683641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/7266810887392683641'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/06/heroic-developer-saga-continues.html' title='Heroic Developer, the Saga Continues.'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-88795993277025480</id><published>2007-06-26T23:18:00.000-05:00</published><updated>2007-06-26T23:30:47.007-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='professional'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Programmers Bill of Rights</title><content type='html'>Coding Horror posted an article in 2006 that proposed a &lt;a href="http://www.codinghorror.com/blog/archives/000666.html" target="_blank"&gt;Programmers Bill of Rights&lt;/a&gt;.  I've worked at some pretty messed up places that violated all or most of these "rights".  Although I know that the word "rights" was used in a tongue-in-cheek manner the point was that these things make sense.  Calling it a "Bill of Rights" was meant to get the readers attention, but it's fair to call the list "Common Sense".  To be fair, most of these things I'd be happy to get myself if I'm paid well enough, but somethings can only be provided by the employer, such as the quiet working conditions and fast internet connection.&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Every programmer shall have two monitors&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Every programmer shall have a fast PC&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Every programmer shall have their choice of mouse and keyboard&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Every programmer shall have a comfortable chair&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Every programmer shall have a fast internet connection&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Every programmer shall have quiet working conditions&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-88795993277025480?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.codinghorror.com/blog/archives/000666.html' title='Programmers Bill of Rights'/><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/88795993277025480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=88795993277025480' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/88795993277025480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/88795993277025480'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/06/programmers-bill-of-rights.html' title='Programmers Bill of Rights'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-6870287506545813880</id><published>2007-06-26T22:57:00.000-05:00</published><updated>2007-07-09T20:00:03.785-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='just kidding'/><category scheme='http://www.blogger.com/atom/ns#' term='process'/><category scheme='http://www.blogger.com/atom/ns#' term='professional'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='sarcasm'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Heroic Developer</title><content type='html'>Look, over in the cube.  It's a nerd.  No, it's a geek.  NO! It's Heroic Coder.  Coding longer than a puny developer!  Introducing bugs and errors faster than a marketing drone can dream up the next greatest feature. HEROIC CODER!&lt;br /&gt;&lt;br /&gt;Seriously, how long can we take it?  If the manager can't plan the project based on sustainable and healthy working hours over time, then you need to push back.  Just because you can work late into the wee hours of the morning and over the weekend doesn't mean you should.  Take a break, go home and drink a cup of tea.  Go for a walk and read a (non-technical) book.  Your brain needs a break.  Spending too much time trying to hack in another knee-jerk requirement is going to end up taking longer and wear you out, leading to increased mistakes and a myopic view of the problem.  That tunnel-vision and fatigue will only add up to having to spend more time later debugging a rapidly deteriorating code-base while still trying to shoehorn in yet another new feature.  It's a vicious cycle and it's up to you to break out of it and take on the mantel of "Professional Developer".&lt;br /&gt;&lt;br /&gt;Heroics == Hours Spent&lt;br /&gt;Professionalism == Effort Maximized&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-6870287506545813880?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/6870287506545813880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=6870287506545813880' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/6870287506545813880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/6870287506545813880'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/06/heroic-developer.html' title='Heroic Developer'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-8932154929463043128</id><published>2007-06-26T21:06:00.001-05:00</published><updated>2007-06-26T21:15:50.874-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='process'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><title type='text'>GWDD</title><content type='html'>Greasy-wheel Driven Development&lt;br /&gt;&lt;br /&gt;All development is driven by whomever is screaming loudest.  Project priority is determined through a bidding type system where the competing requests are escalated up to the next highest person in the management chain.  Progress is managed by continuous nagging and veiled threats to whatever resources are assigned to, or at least coerced into working on, the issue.&lt;br /&gt;&lt;br /&gt;See also &lt;a href="http://www.scottberkun.com/blog/2007/asshole-driven-development/" target="_blank"&gt;ADD&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-8932154929463043128?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/8932154929463043128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=8932154929463043128' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/8932154929463043128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/8932154929463043128'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/06/gwdd.html' title='GWDD'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-6643759345237372518</id><published>2007-06-26T13:22:00.000-05:00</published><updated>2007-07-07T13:38:04.801-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><title type='text'>Automated code formatting tools</title><content type='html'>I love automated code formatting tools.  Anything that will help clean the layout of code, especially code that I've inherited, is a major productivity booster.  &lt;br /&gt;&lt;br /&gt;I've been a bit of an evangelist for &lt;a href="http://www.jetbrains.com/resharper"&gt;ReSharper&lt;/a&gt; in every development team I've been a member of.  If the only thing ReSharper provided was code formatting I would still recommend it. It provides a great deal more which I'll cover some other time.  ReSharper has granular enough code-style rules tools that should satisfy almost any possible team standard for code layout.  The rules can also be imported/exported which is a time saver when you work on several machines or in a team.  ReSharper is one of the few tools I've bought out of my own pocket and will be happily upgrading my 1.x license to the new 3.0 version very soon.&lt;br /&gt;&lt;br /&gt;A classic free tool is &lt;a href="http://www.roland-weigelt.de/ghostdoc/"&gt;GhostDoc&lt;/a&gt;.  It doesn't reformat your code, but it will clean up and generate the xml documentation for methods, constructors and properties.  It's very handy when you are maintaining code that doesn't have any xml comments to select "Document This" from inside the method and have the template filled out for you.&lt;br /&gt;&lt;br /&gt;A new tool that seems very promising is &lt;a href="http://www.rauchy.net/regionerate/"&gt;Regionerate&lt;/a&gt;.  It will automatically organize your C# class properties, fields, constructors, events and methods into neat regions with nice labels that contain a count of the number of items in that region.  Very slick.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-6643759345237372518?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/6643759345237372518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=6643759345237372518' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/6643759345237372518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/6643759345237372518'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/06/automated-code-formatting-tools.html' title='Automated code formatting tools'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-7389470837715129621</id><published>2007-06-25T09:27:00.000-05:00</published><updated>2007-06-25T09:37:18.204-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dunno'/><title type='text'>The Play</title><content type='html'>The actors are assembled for the Writer's play.  Some will play heroes, and some villains while most will walk through the scene forgotten and unheard.  The Director moves the actors through the tragedy and comedy and the quiet moments in-between.  When the script is done and the speaking stops the curtains draw and the all is ended.  The cast is called to take a bow, is the villain still applauded?  Or is he taken away and punished for his role?  Is the hero to be knighted?  The Writer wrote their deeds and they played their part as it was already decided.  Who will be invited to the post-production party?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-7389470837715129621?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/7389470837715129621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=7389470837715129621' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/7389470837715129621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/7389470837715129621'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/06/play.html' title='The Play'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-5019335899313266167</id><published>2007-06-22T11:58:00.000-05:00</published><updated>2007-06-25T09:27:16.728-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='just kidding'/><title type='text'>How would you unit test this?</title><content type='html'>&lt;code&gt;if ( Jack.WorkQuantity == "All"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;&amp; Jack.PlayQuantity == "No" )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Jack.BoyType = BoyTypes.Dull;&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It's a trick question, the answer is "Don't."  Go outside, nerd.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-5019335899313266167?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/5019335899313266167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=5019335899313266167' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/5019335899313266167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/5019335899313266167'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/06/how-would-you-unit-test-this.html' title='How would you unit test this?'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-7667392884127635776</id><published>2007-06-22T07:25:00.000-05:00</published><updated>2007-06-22T07:59:44.717-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eu'/><category scheme='http://www.blogger.com/atom/ns#' term='poland'/><title type='text'>Polish PM stands up to Germany</title><content type='html'>Germany is pushing for the votes of EU members to be based upon population.  Which is not surprising considering that Germany has the highest population on the European continent, second only to Russia.  Poland, in a welcome change of attitude to it's typically acquiescent nature, has unleashed a blitzkrieg* attack on the German argument.&lt;br /&gt;&lt;br /&gt;The Polish PM has pointed out that the population of Poland was horrifically decimated by the Germans during WW2.  The situation in Poland would be quite different as the fallout from the 1939 to 1945 war, which slaughtered over 6,000,000 in Poland alone, has left them in a weakened state that they have never fully recovered from.&lt;br /&gt;&lt;br /&gt;I'd like to point out that the Soviet Russian occupation of Poland for decades after the war only further exacerbated the problem.  Which is still to the point because it probable wouldn't have happened if it weren't for the original German aggression.&lt;br /&gt;&lt;br /&gt;Quote from the thisislondon.co.uk article.&lt;br /&gt;&lt;blockquote&gt;Poland has been fighting plans for the summit - being held in Germany - to change the EU's voting system to one based on population.&lt;br /&gt;&lt;br /&gt;It would increase the influence of the host country, EU's largest with 82million people, at the expense of smaller members such as Poland, which has only 38million.&lt;br /&gt;&lt;br /&gt;Mr Kaczynski stunned other EU leaders by claiming that Poland has 28million fewer people than it should have as a result of the slaughter inflicted by Germany between 1939 and 1945. &lt;/blockquote&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Area_and_population_of_European_countries"&gt;Area and population of European countries&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;*pun, somewhat intended. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-7667392884127635776?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.thisislondon.co.uk/news/article-23401261-details/We&apos;d+have+more+power+in+EU+if+Germans+hadn&apos;t+&apos;reduced+our+population&apos;+in+World+War+II%2C+says+Polish+PM/article.do' title='Polish PM stands up to Germany'/><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/7667392884127635776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=7667392884127635776' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/7667392884127635776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/7667392884127635776'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/06/polish-pm-stands-up-to-germany.html' title='Polish PM stands up to Germany'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-8952300210962190389</id><published>2007-05-18T00:57:00.000-05:00</published><updated>2007-05-18T01:02:38.649-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>[Linky] HOW TO: Debug into a .NET XmlSerializer Generated Assembly</title><content type='html'>When using the xml serialization object to serialize and deserialize an object a temporary class file is generated.  This article explains how to find the intermediary file and step into it with the VS.Net debugger.&lt;br /&gt;&lt;br /&gt;Article by Scott Hanselman.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-8952300210962190389?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.hanselman.com/blog/HOWTODebugIntoANETXmlSerializerGeneratedAssembly.aspx' title='[Linky] HOW TO: Debug into a .NET XmlSerializer Generated Assembly'/><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/8952300210962190389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=8952300210962190389' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/8952300210962190389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/8952300210962190389'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/05/linky-how-to-debug-into-net.html' title='[Linky] HOW TO: Debug into a .NET XmlSerializer Generated Assembly'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-2444372560568473499</id><published>2007-05-18T00:33:00.000-05:00</published><updated>2007-05-18T00:35:04.168-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='just kidding'/><title type='text'>wut it looks liek</title><content type='html'>thiss wut it luks liek wien my wife not edit my posts&lt;br /&gt;&lt;br /&gt;nerf&lt;br /&gt;&lt;br /&gt;^_^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-2444372560568473499?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/2444372560568473499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=2444372560568473499' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2444372560568473499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2444372560568473499'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/05/wut-it-looks-liek.html' title='wut it looks liek'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-1765139274835510679</id><published>2007-05-17T20:56:00.000-05:00</published><updated>2007-05-18T14:44:16.974-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interviewing'/><category scheme='http://www.blogger.com/atom/ns#' term='job hunting'/><title type='text'>From hard-sell to conversation</title><content type='html'>Interviewing is like selling a used-car.  Only, instead of a jalopy, you have to pitch yourself or your company.  You must negotiate the buyer’s eyes away from the patches of rust and the little ding on the door, and instead get them to notice the powerful, efficient engine and high gas mileage.  It requires you to look on the bright side of everything, while carefully dancing away from the edge of lying.&lt;br /&gt;&lt;br /&gt;I used to think interviewing was fun, even intellectually stimulating; a battle of wits where you had to be on your best behavior and use your imagination and experience to stay a few steps ahead of your inquisitor; an artful journey of remaining within the realm of truth and honesty but without contemplating on your shortcomings open to another ones judgment.&lt;br /&gt;Politicians and salesman have tough jobs if they're really honest, but not many of them would know that.  Now, interviewing to me is drudgery, a painful task that leaves me emotionally and physically exhausted.  I'm tired of interviews.&lt;br /&gt;&lt;br /&gt;What can be done to move away from the car lot and into the realm of a creative professional?  How can we change from the hard-sell tactics to a human conversation?&lt;br /&gt;&lt;br /&gt;The first step would be to change the formal gauntlet of questions into a conversation.  I always felt like everyone is working off the same question sheet for interviews.  Like a standardized test where if you take it enough times you'll start recognizing questions and end up just reciting rote answers from memory.  Make it a conversation.&lt;br /&gt;&lt;br /&gt;Interviewer, instead of asking whether the candidate has worked with X technology or Y system, talk about what your company is doing.  Describe the projects you are working on, even the problems you ran into and how you overcame them (or didn’t).   Tell a story about the job and the people you work with.  Be open.  Don't just blurt out "Tell me a story about a time you overcame a difficult problem." as so many interviewers have done to me in the past; tell the person you are interviewing about some of the problems you may be encountering on a project and see what they have to say.  You may discover, your interviewee having a creative side that is able to understand and share in the conversation.  However, if your interviewee stares at the horn that apparently is slowly growing out of your forehead, then maybe the conversation is done.  Interviewer, understand that you are the one who is actually in the hardest situation.  You are the one who needs someone to do something.  Asking a pre-fabricated list of questions isn't going to grant you a good colleague, co-worker or employee.  What will grant you those things is a more personal exchange.&lt;br /&gt;&lt;br /&gt;Interviewee, don't be afraid.  You aren't a passive participant bracing yourself for the next wave of questions.  Ask your own questions.  Be prepared to be an active participant in determining if this job is as good as the blurb said it was.  You wouldn't buy a car based only on the description in the advertisement, would you?  You would ask about mileage, whether the car was in an accident, and what type of guarantee does the dealership offer.  If you can question a car salesman then why would you not do the same with your interviewer?  You need to know if this job is the right fit for you, what kind of hours will you work, what tools will you have at your disposal, and is there a coffee machine in the break room?&lt;br /&gt;&lt;br /&gt;Interviewer, if you depend on pre-fabricated questions, then consider the standardized test scenario.  If the questions are expected by the interviewee, then the answers are easy to memorize and rattled off by rote.&lt;br /&gt;&lt;br /&gt;Interviewee, the danger for you is the deception of omission on part of the interviewer.  If you passively depend on the interviewer to guide the interview, then you may not find out about the 80-hour work week until well after the time for graceful exit has passed.&lt;br /&gt;&lt;br /&gt;Conversations are generally hard to fabricate because of their constant state of give and take.  Because conversations are free-form, the ideas and statements can be followed up on or questioned. It is harder for someone to dance through the field if they don't already know where the mines are buried.&lt;br /&gt;&lt;br /&gt;Finally, Interviewer, get rid of the gauntlet.  Make it a one shot deal.  A good conversation is cohesive and fluid.  It can’t be broken up into a number of sessions with various people who often repetitively ask the same questions that I just answered in a previous session.  I find it the most exhausting, having to sit down and go through the same introductions a half-dozen times only to be passed like a relay-baton to the next runner.  Conversations can ebb and flow but they are constant.  If you can’t have everybody show up at once, then bring them in while keeping the conversation going.  Interviewer, if you have to collaborate with a half-dozen parties, post-interview to discuss their impressions, why not just get them all together for the interview itself?&lt;br /&gt;&lt;br /&gt;In the last several years, I’ve only had one interview that felt like a real conversation.  Some standard questions were asked, but for the most part the interview was done by several programmers and team leads asking questions and talking about the job.  It was a memorable experience that left me wanting to work there.  Things changed however.  Outside influences seeped in and negative behaviors were encouraged causing openness and idea sharing to no longer be valued and ultimately abandoned.  As a result, I am interviewing again.  I'm reflecting on the positives that this company had and the reasons why I wanted to work there.  And I must say, it was my interview; a little conversation I had with some people about a job they were doing.&lt;br /&gt;&lt;br /&gt;Now, I am back on the car-lot listening to the same old spiels , but what I am really looking for is a good chat.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-1765139274835510679?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/1765139274835510679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=1765139274835510679' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/1765139274835510679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/1765139274835510679'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/05/from-hard-sell-to-conversation.html' title='From hard-sell to conversation'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-8461868463730813759</id><published>2007-05-12T12:24:00.000-05:00</published><updated>2007-07-07T13:38:54.432-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='methodology'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>What is "done"?</title><content type='html'>Back when I was just getting my teeth into agile software development I was confused as to when a project can be considered done.  Some colleagues said that when it was good enough or when they stopped being paid; but most of the definitions were too vague and indeterminate.  When can we step back and safely say that all the necessary steps for producing a quality product have been satisfied?  I sat down and considered all the "musts" and "shoulds" from a variety of sources and created the following list.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%; font-weight: bold;"&gt;What is “done”?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Done is…&lt;ul&gt;&lt;br /&gt;&lt;li style="list-style-type: none; padding-bottom: 10px; padding-top: -5px;"&gt;…  the software has been written to address the requirements of the end-user.  No more, no less.&lt;/li&gt;&lt;br /&gt;&lt;li style="list-style-type: none; padding-bottom: 10px;"&gt;…  the software has a suite of tests written to exercise and validate that it meets the requirements and is technically valid.&lt;/li&gt;&lt;br /&gt;&lt;li style="list-style-type: none; padding-bottom: 10px;"&gt;…  the software’s source code has been reviewed by a peer, preferably peers.&lt;/li&gt;&lt;br /&gt;&lt;li style="list-style-type: none; padding-bottom: 10px;"&gt;…  the software’s source code meets the development teams coding standards.&lt;/li&gt;&lt;br /&gt;&lt;li style="list-style-type: none; padding-bottom: 10px;"&gt;…  the software’s source code has been factored into logical and easily readable sections.&lt;/li&gt;&lt;br /&gt;&lt;li style="list-style-type: none; padding-bottom: 10px;"&gt;…  the software’s functionality has been tested by integrating it into the system it will reside.&lt;/li&gt;&lt;br /&gt;&lt;li style="list-style-type: none; padding-bottom: 10px;"&gt;…  the software’s functionality has been documented and described for future developers and users.&lt;/li&gt;&lt;br /&gt;&lt;li style="list-style-type: none; padding-bottom: 10px;"&gt;…  the software has been tested and reviewed by a quality assurance expert.&lt;/li&gt;&lt;br /&gt;&lt;li style="list-style-type: none; padding-bottom: 10px;"&gt;…  the software has appropriate installation and/or configuration procedures created and documented.&lt;/li&gt;&lt;br /&gt;&lt;li style="list-style-type: none;"&gt;…  the software’s functionality has been verified as meeting the requirements of the end-user by the end-user.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Special thanks to Derik Whittaker for digging up this document, the original is archived on some backup disc that I will have to find eventually but it was written in the Autumn of 2006.  Click over to Derik's blog and read some of his stuff, it's worth your time. &lt;a href="http://devlicio.us/blogs/derik_whittaker/archive/2007/05/12/definition-of-done.aspx" target="_blank"&gt;Derik Whittaker's blog&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-8461868463730813759?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/8461868463730813759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=8461868463730813759' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/8461868463730813759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/8461868463730813759'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/05/what-is-done.html' title='What is &quot;done&quot;?'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-5978377491075429615</id><published>2007-05-11T00:37:00.001-05:00</published><updated>2007-05-11T00:40:05.361-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='the good life'/><title type='text'>I'll never understand some things.</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;For example, how a multi-faceted and dynamic woman like my wife could possibly think that being married to me is a good thing.  The narcotics probably help, but still.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;p class='poweredbyperformancing'&gt;Powered by &lt;a href='http://scribefire.com/'&gt;ScribeFire&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-5978377491075429615?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/5978377491075429615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=5978377491075429615' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/5978377491075429615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/5978377491075429615'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/05/i-never-understand-some-things.html' title='I&apos;ll never understand some things.'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-1954391409459458945</id><published>2007-05-08T01:38:00.000-05:00</published><updated>2007-05-08T01:55:11.575-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='history'/><title type='text'>Shorpy | The 100-Year-Old Photo Blog</title><content type='html'>Wow, just wow.  Amazing photos dating back to the late 1800s.  Images range from recreation by the pool to slave pens to hobos and tramps to early baseball club members.  And an easy to navigate site, definitely worth spending some time browsing through the images and realizing just how good the "good ole days" weren't.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.shorpy.com/" target="_blank" title="Shorpy | The 100-Year-Old Photo Blog"&gt;Shorpy&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Feeling very, very grateful for my great career right about ... &lt;a href="http://www.shorpy.com/shorpy" target="_blank" title="A little bit about Shorpy Higginbotham."&gt;now&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-1954391409459458945?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.shorpy.com/' title='Shorpy | The 100-Year-Old Photo Blog'/><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/1954391409459458945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=1954391409459458945' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/1954391409459458945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/1954391409459458945'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/05/shorpy-100-year-old-photo-blog.html' title='Shorpy | The 100-Year-Old Photo Blog'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-1689631168468663931</id><published>2007-04-30T13:30:00.000-05:00</published><updated>2007-04-30T13:50:20.588-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='creative commons'/><category scheme='http://www.blogger.com/atom/ns#' term='resume'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='#Résumé'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='SharpResume'/><title type='text'>#Résumé</title><content type='html'>An HR-XML compatible résumé API for creating and manipulating standardized resume formats.  The API is implemented in .NET 2.0 using C#.&lt;br /&gt;&lt;br /&gt;Learn more about the HR-XML Consortium &lt;a href="http://ns.hr-xml.org/2_5/HR-XML-2_5/SEP/Resume.html" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Download #Résumé from CodePlex &lt;a href="http://www.codeplex.com/sharpresume" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The initial release is the most basic implementation for generating basic resume format documents.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-1689631168468663931?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.codeplex.com/sharpresume' title='#Résumé'/><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/1689631168468663931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=1689631168468663931' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/1689631168468663931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/1689631168468663931'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/rsum.html' title='#Résumé'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-2472175623457049650</id><published>2007-04-27T23:18:00.000-05:00</published><updated>2007-04-27T23:41:20.845-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='wallpaper'/><category scheme='http://www.blogger.com/atom/ns#' term='work'/><title type='text'>VladStudio: Excellent Desktop Wallpaper Resource</title><content type='html'>I'm a little neurotic about my desktop wallpaper.  As a developer, I spend an inordinate amount of time staring at my computer.  Granted, I'm rarely looking at a blank desktop but I like to have something tasteful and artistic when I want to access something on my desktop with my Win+D key chord.  &lt;br /&gt;&lt;br /&gt;One day I was sitting by a business analyst while collaborating on a project and noticed his nice desktop image.  He introduced me to VladStudio, a Russian artist who has been pumping out hundreds of beautiful designs.  He even has a system tray application called &lt;a href="http://www.vladstudio.com/companion/" target="_blank"&gt;Companion&lt;/a&gt; than can change your wallpaper based on a custom schedule or whenever you just decide you need a new look by just double-clicking the system tray icon.  &lt;br /&gt;&lt;br /&gt;He provides low-resolution images for free that are still gorgeous.  But you can get lifetime access to high resolution images for under $30.00 US.  The registration is worth it if only to help him to keep creating designs.  I registered several months ago, and he has since added widescreen resolutions images that look even better on my big wide Gateway.&lt;br /&gt;&lt;br /&gt;The best part is the the images are very tasteful.  I never have to worry about walking away from my workstation and returning to find an email from the HR department.  Now I have people asking me where I got my nice desktop image. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-2472175623457049650?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.vladstudio.com' title='VladStudio: Excellent Desktop Wallpaper Resource'/><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/2472175623457049650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=2472175623457049650' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2472175623457049650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2472175623457049650'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/vladstudio-excellent-desktop-wallpaper.html' title='VladStudio: Excellent Desktop Wallpaper Resource'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-788300649032582727</id><published>2007-04-27T20:06:00.000-05:00</published><updated>2007-04-27T20:46:49.460-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><title type='text'>JavaScript String.format() method.</title><content type='html'>A while back I worked on a pretty heavy duty JavaScript interface that required, as is typical in any UI, a lot of string manipulation.  I became tired of building strings with concatenation, they had a tendency to get unwieldy.  I wrote this simple string formatting utility for building strings similiar to C#.&lt;br /&gt;&lt;br /&gt;The best way to use it is to put it into an external JavaScript source file and reference it throughout the project.&lt;br /&gt;&lt;br /&gt;Although the method has only one defined argument it will accept any number of arguments.  If you provide more or less arguments than you define in your string they will not cause an error, they will be ignored.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white; border: solid 1px black; padding: 10px 10px 10px 10px; overflow: auto; white-space: nowrap;"&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;String&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;format &lt;span style="color: #000096; font-weight: bold;"&gt;=&lt;/span&gt; function( text )&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//check if there are two arguments in the arguments list&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;if&lt;/span&gt; ( arguments&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;length &lt;span style="color: #000096; font-weight: bold;"&gt;&amp;lt;=&lt;/span&gt; 1 )&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//if there are not 2 or more arguments there's nothing to replace&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//just return the original text&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;return&lt;/span&gt; text;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//decrement to move to the second argument in the array&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var tokenCount &lt;span style="color: #000096; font-weight: bold;"&gt;=&lt;/span&gt; arguments&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;length &lt;span style="color: #000096; font-weight: bold;"&gt;-&lt;/span&gt; 2;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;for&lt;/span&gt;( var token &lt;span style="color: #000096; font-weight: bold;"&gt;=&lt;/span&gt; 0; token &lt;span style="color: #000096; font-weight: bold;"&gt;&amp;lt;=&lt;/span&gt; tokenCount; token&lt;span style="color: #000096; font-weight: bold;"&gt;++&lt;/span&gt; )&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//iterate through the tokens and replace their placeholders from the original text in order&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; text &lt;span style="color: #000096; font-weight: bold;"&gt;=&lt;/span&gt; text&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;replace( &lt;span style="color: #000096; font-weight: bold;"&gt;new&lt;/span&gt; RegExp( &lt;span style="color: blue;"&gt;"\\{"&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;+&lt;/span&gt; token &lt;span style="color: #000096; font-weight: bold;"&gt;+&lt;/span&gt; &lt;span style="color: blue;"&gt;"\\}"&lt;/span&gt;, &lt;span style="color: blue;"&gt;"gi"&lt;/span&gt; ),&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  arguments[ token &lt;span style="color: #000096; font-weight: bold;"&gt;+&lt;/span&gt; 1 ] );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;return&lt;/span&gt; text;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;};&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You can test the method with these simple tests.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white; border: solid 1px black; padding: 10px 10px 10px 10px; overflow: auto; white-space: nowrap;"&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: green;"&gt;//simple tests&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;document&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;write( &lt;span style="color: #4f4f4f; font-weight: bold;"&gt;String&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;format( &lt;span style="color: blue;"&gt;"no tokens&amp;lt;br /&amp;gt;"&lt;/span&gt; ) );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;document&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;write( &lt;span style="color: #4f4f4f; font-weight: bold;"&gt;String&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;format( &lt;span style="color: blue;"&gt;"one token, no args ({0})&amp;lt;br /&amp;gt;"&lt;/span&gt; ) );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;document&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;write( &lt;span style="color: #4f4f4f; font-weight: bold;"&gt;String&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;format( &lt;span style="color: blue;"&gt;"one token, one args ({0})&amp;lt;br /&amp;gt;"&lt;/span&gt;, &lt;span style="color: blue;"&gt;"arg1"&lt;/span&gt; ) );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;document&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;write( &lt;span style="color: #4f4f4f; font-weight: bold;"&gt;String&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;format( &lt;span style="color: blue;"&gt;"one tokens, two args ({0})&amp;lt;br /&amp;gt;"&lt;/span&gt;, &lt;span style="color: blue;"&gt;"arg1"&lt;/span&gt;, &lt;span style="color: blue;"&gt;"arg2"&lt;/span&gt; ) );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;document&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;write( &lt;span style="color: #4f4f4f; font-weight: bold;"&gt;String&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;format( &lt;span style="color: blue;"&gt;"two tokens, two args ({0},{1})&amp;lt;br /&amp;gt;"&lt;/span&gt;, &lt;span style="color: blue;"&gt;"arg1"&lt;/span&gt;, &lt;span style="color: blue;"&gt;"arg2"&lt;/span&gt; ) );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;document&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;write( &lt;span style="color: #4f4f4f; font-weight: bold;"&gt;String&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;format( &lt;span style="color: blue;"&gt;"two tokens swapped, two args ({1},{0})&amp;lt;br /&amp;gt;"&lt;/span&gt;, &lt;span style="color: blue;"&gt;"arg1"&lt;/span&gt;, &lt;span style="color: blue;"&gt;"arg2"&lt;/span&gt; ) );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;document&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;write( &lt;span style="color: #4f4f4f; font-weight: bold;"&gt;String&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;format( &lt;span style="color: blue;"&gt;"four tokens interwoven, two args ({0},{1},{0},{1})&amp;lt;br /&amp;gt;"&lt;/span&gt;, &lt;span style="color: blue;"&gt;"arg1"&lt;/span&gt;, &lt;span style="color: blue;"&gt;"arg2"&lt;/span&gt; ) );&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-788300649032582727?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/788300649032582727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=788300649032582727' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/788300649032582727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/788300649032582727'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/javascript-stringformat-method.html' title='JavaScript String.format() method.'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-2304299083677054340</id><published>2007-04-27T17:57:00.002-05:00</published><updated>2007-04-27T22:34:25.943-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='please link back'/><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='creative commons'/><category scheme='http://www.blogger.com/atom/ns#' term='royalty free'/><title type='text'>Free Image: Old Timey Register</title><content type='html'>&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons/photo#5058240326079552226"&gt;&lt;img src="http://lh4.google.com/image/frogsbrain/RjJ6xuCHGuI/AAAAAAAAADg/9EhjxQpJwPY/s144/PICT1259.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons"&gt;Creative Commons&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-2304299083677054340?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/2304299083677054340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=2304299083677054340' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2304299083677054340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2304299083677054340'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/free-old-timey-register.html' title='Free Image: Old Timey Register'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-3402420739281267119</id><published>2007-04-27T17:57:00.001-05:00</published><updated>2007-04-27T22:34:46.313-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='please link back'/><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='creative commons'/><category scheme='http://www.blogger.com/atom/ns#' term='royalty free'/><title type='text'>Free Image: Old Wheel by a Tree</title><content type='html'>&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons/photo#5058239982482168530"&gt;&lt;img src="http://lh4.google.com/image/frogsbrain/RjJ6duCHGtI/AAAAAAAAADY/rYjyaVM9wWU/s144/PICT1109.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons"&gt;Creative Commons&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-3402420739281267119?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/3402420739281267119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=3402420739281267119' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/3402420739281267119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/3402420739281267119'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/free-old-wheel-by-tree.html' title='Free Image: Old Wheel by a Tree'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-4630531227674882364</id><published>2007-04-27T17:56:00.004-05:00</published><updated>2007-04-27T22:35:15.135-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='please link back'/><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='creative commons'/><category scheme='http://www.blogger.com/atom/ns#' term='royalty free'/><title type='text'>Free Image: Golden Gate Goes By</title><content type='html'>&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons/photo#5058239492855896770"&gt;&lt;img src="http://lh6.google.com/image/frogsbrain/RjJ6BOCHGsI/AAAAAAAAADQ/0onRMLokXXY/s144/PICT0050.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons"&gt;Creative Commons&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-4630531227674882364?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/4630531227674882364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=4630531227674882364' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/4630531227674882364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/4630531227674882364'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/free-golden-gate-goes-by.html' title='Free Image: Golden Gate Goes By'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-537870184539500008</id><published>2007-04-27T17:56:00.003-05:00</published><updated>2007-04-27T22:32:45.374-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='please link back'/><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='creative commons'/><category scheme='http://www.blogger.com/atom/ns#' term='royalty free'/><title type='text'>Free Image: Windmill Overhead</title><content type='html'>&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons/photo#5058239286697466546"&gt;&lt;img src="http://lh6.google.com/image/frogsbrain/RjJ51OCHGrI/AAAAAAAAADI/LaBI7btX-10/s144/PICT0205.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons"&gt;Creative Commons&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-537870184539500008?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/537870184539500008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=537870184539500008' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/537870184539500008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/537870184539500008'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/free-windmill-overhead.html' title='Free Image: Windmill Overhead'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-8859351045359690854</id><published>2007-04-27T17:56:00.001-05:00</published><updated>2007-04-27T22:32:50.271-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='please link back'/><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='creative commons'/><category scheme='http://www.blogger.com/atom/ns#' term='royalty free'/><title type='text'>Free Image: Tilted Windmill</title><content type='html'>&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons/photo#5058239144963545762"&gt;&lt;img src="http://lh5.google.com/image/frogsbrain/RjJ5s-CHGqI/AAAAAAAAADA/MhNy-7zZoM4/s144/PICT0204.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons"&gt;Creative Commons&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-8859351045359690854?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/8859351045359690854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=8859351045359690854' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/8859351045359690854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/8859351045359690854'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/free-tilted-windmill.html' title='Free Image: Tilted Windmill'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-706611617381685559</id><published>2007-04-27T17:55:00.001-05:00</published><updated>2007-04-27T22:32:55.286-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='please link back'/><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='creative commons'/><category scheme='http://www.blogger.com/atom/ns#' term='royalty free'/><title type='text'>Free Image: Windwill at Dusk</title><content type='html'>&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons/photo#5058239020409494162"&gt;&lt;img src="http://lh4.google.com/image/frogsbrain/RjJ5luCHGpI/AAAAAAAAAC4/u0TLeS2lLEc/s144/PICT0203.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons"&gt;Creative Commons&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-706611617381685559?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/706611617381685559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=706611617381685559' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/706611617381685559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/706611617381685559'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/free-windwill-at-dusk.html' title='Free Image: Windwill at Dusk'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-6570048606338056348</id><published>2007-04-27T17:54:00.004-05:00</published><updated>2007-04-27T22:33:02.018-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='please link back'/><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='creative commons'/><category scheme='http://www.blogger.com/atom/ns#' term='royalty free'/><title type='text'>Free Image: Sunset Over the Waves</title><content type='html'>&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons/photo#5058238900150409858"&gt;&lt;img src="http://lh4.google.com/image/frogsbrain/RjJ5euCHGoI/AAAAAAAAACw/AY-OT4aCfpA/s144/PICT0200.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons"&gt;Creative Commons&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-6570048606338056348?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/6570048606338056348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=6570048606338056348' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/6570048606338056348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/6570048606338056348'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/free-sunset-over-waves.html' title='Free Image: Sunset Over the Waves'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-2893910777402350349</id><published>2007-04-27T17:54:00.003-05:00</published><updated>2007-04-27T22:33:07.058-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='please link back'/><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='creative commons'/><category scheme='http://www.blogger.com/atom/ns#' term='royalty free'/><title type='text'>Free Image: Waves</title><content type='html'>&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons/photo#5058238762711456370"&gt;&lt;img src="http://lh4.google.com/image/frogsbrain/RjJ5WuCHGnI/AAAAAAAAACo/hl6z2VQbvEU/s144/PICT0196.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons"&gt;Creative Commons&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-2893910777402350349?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/2893910777402350349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=2893910777402350349' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2893910777402350349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2893910777402350349'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/free-waves.html' title='Free Image: Waves'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-6059974610604407724</id><published>2007-04-27T17:54:00.001-05:00</published><updated>2007-04-27T22:33:11.857-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='please link back'/><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='creative commons'/><category scheme='http://www.blogger.com/atom/ns#' term='royalty free'/><title type='text'>Free Image: Bird Over the Waves</title><content type='html'>&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons/photo#5058238573732895330"&gt;&lt;img src="http://lh4.google.com/image/frogsbrain/RjJ5LuCHGmI/AAAAAAAAACg/jyKAPOk4vY8/s144/PICT0193.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons"&gt;Creative Commons&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-6059974610604407724?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/6059974610604407724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=6059974610604407724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/6059974610604407724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/6059974610604407724'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/free-bird-over-waves.html' title='Free Image: Bird Over the Waves'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-6951486558811901245</id><published>2007-04-27T17:53:00.001-05:00</published><updated>2007-04-27T22:33:19.678-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='please link back'/><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='creative commons'/><category scheme='http://www.blogger.com/atom/ns#' term='royalty free'/><title type='text'>Free Image: Bird on the Sand</title><content type='html'>&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons/photo#5058238195775773250"&gt;&lt;img src="http://lh4.google.com/image/frogsbrain/RjJ41uCHGkI/AAAAAAAAACQ/Mb4f20gLGLI/s144/PICT0189.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons"&gt;Creative Commons&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-6951486558811901245?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/6951486558811901245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=6951486558811901245' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/6951486558811901245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/6951486558811901245'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/free-bird-on-sand.html' title='Free Image: Bird on the Sand'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-4579960514537958608</id><published>2007-04-27T17:08:00.001-05:00</published><updated>2007-04-27T22:33:26.464-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='please link back'/><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='creative commons'/><category scheme='http://www.blogger.com/atom/ns#' term='royalty free'/><title type='text'>Free Image: Light on the Waves</title><content type='html'>&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons/photo#5058237122033949170"&gt;&lt;img src="http://lh6.google.com/image/frogsbrain/RjJ33OCHGfI/AAAAAAAAABo/ruZD63OKLOw/s144/PICT0194.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons"&gt;Creative Commons&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-4579960514537958608?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/4579960514537958608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=4579960514537958608' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/4579960514537958608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/4579960514537958608'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/free-light-on-waves.html' title='Free Image: Light on the Waves'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-900974057713147680</id><published>2007-04-27T17:08:00.000-05:00</published><updated>2007-04-27T22:35:56.200-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='please link back'/><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='creative commons'/><category scheme='http://www.blogger.com/atom/ns#' term='royalty free'/><title type='text'>Free Image: Bird Tracks in the Sand</title><content type='html'>&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons/photo#5058238410524138066"&gt;&lt;img src="http://lh6.google.com/image/frogsbrain/RjJ5COCHGlI/AAAAAAAAACY/hkMWljS760Y/s144/PICT0190.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons"&gt;Creative Commons&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-900974057713147680?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/900974057713147680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=900974057713147680' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/900974057713147680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/900974057713147680'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/free-tracks-in-sand.html' title='Free Image: Bird Tracks in the Sand'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-8884001656369565924</id><published>2007-04-27T17:07:00.000-05:00</published><updated>2007-04-27T22:33:41.706-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='please link back'/><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='creative commons'/><category scheme='http://www.blogger.com/atom/ns#' term='royalty free'/><title type='text'>Free Image: Shadows</title><content type='html'>&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons/photo#5058237353962183170"&gt;&lt;img src="http://lh4.google.com/image/frogsbrain/RjJ4EuCHGgI/AAAAAAAAABw/oCYg5kFJLkU/s144/PICT0177.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons"&gt;Creative Commons&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-8884001656369565924?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/8884001656369565924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=8884001656369565924' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/8884001656369565924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/8884001656369565924'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/free-shadows.html' title='Free Image: Shadows'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-7591109357238475544</id><published>2007-04-27T17:06:00.000-05:00</published><updated>2007-04-27T22:33:50.225-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='please link back'/><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='creative commons'/><category scheme='http://www.blogger.com/atom/ns#' term='royalty free'/><title type='text'>Free Image: Mushrooms</title><content type='html'>&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons/photo#5058237560120613394"&gt;&lt;img src="http://lh4.google.com/image/frogsbrain/RjJ4QuCHGhI/AAAAAAAAAB4/sgDw3pqjDKI/s144/PICT0175.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons"&gt;Creative Commons&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-7591109357238475544?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/7591109357238475544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=7591109357238475544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/7591109357238475544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/7591109357238475544'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/free-mushrooms.html' title='Free Image: Mushrooms'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-2943686541668411242</id><published>2007-04-27T17:04:00.000-05:00</published><updated>2007-04-27T22:33:56.059-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='please link back'/><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='creative commons'/><category scheme='http://www.blogger.com/atom/ns#' term='royalty free'/><title type='text'>Free Image: Flower</title><content type='html'>&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons/photo#5058237976732441138"&gt;&lt;img src="http://lh5.google.com/image/frogsbrain/RjJ4o-CHGjI/AAAAAAAAACI/PkQ4ZhehAhQ/s144/PICT0095.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons"&gt;Creative Commons&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-2943686541668411242?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/2943686541668411242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=2943686541668411242' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2943686541668411242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2943686541668411242'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/free-flower.html' title='Free Image: Flower'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-7102645644772595177</id><published>2007-04-27T17:01:00.000-05:00</published><updated>2007-04-27T22:34:03.398-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='please link back'/><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='creative commons'/><category scheme='http://www.blogger.com/atom/ns#' term='royalty free'/><title type='text'>Free Image: Duck</title><content type='html'>&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons/photo#5058237727624337954"&gt;&lt;img src="http://lh3.google.com/image/frogsbrain/RjJ4aeCHGiI/AAAAAAAAACA/-Ab183DAHvE/s144/PICT0064.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/frogsbrain/CreativeCommons"&gt;Creative Commons&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-7102645644772595177?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/7102645644772595177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=7102645644772595177' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/7102645644772595177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/7102645644772595177'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/free-duck.html' title='Free Image: Duck'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-6654789708769463410</id><published>2007-04-27T04:31:00.000-05:00</published><updated>2007-04-28T02:27:05.363-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='images'/><category scheme='http://www.blogger.com/atom/ns#' term='frogs'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='royalty free'/><title type='text'>PD Photo -- Free Photos And Pictures</title><content type='html'>Finding images to use in your site is a real pain if you care anything about the photographer's copyright.  While looking for a nice picture of a frog I found some sites charging hundreds of dollars for a single image.  While I understand that a photographer can spend thousands of dollars on photographic equipment, and they need to eat too, that pricing is way too high for my budget.&lt;br /&gt;&lt;br /&gt;Fortunately, there's a great site, PD Photo.org that is a repository of public domain and royalty free images that you can manipulate and use for pretty much anything you want.  The only thing they ask is that you verify the license of the photo before you use it, as some of their photo's do have restrictions (which they explain in their FAQ) and to provide a link back to them acknowledging where you found the image.  &lt;br /&gt;&lt;br /&gt;Well, I found a couple images that I like and am already using one for the header of this blog.  Visit their site and check them out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-6654789708769463410?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://pdphoto.org/index.php' title='PD Photo -- Free Photos And Pictures'/><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/6654789708769463410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=6654789708769463410' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/6654789708769463410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/6654789708769463410'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/pd-photo-free-photos-and-pictures.html' title='PD Photo -- Free Photos And Pictures'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-3633516225168390300</id><published>2007-04-26T22:57:00.000-05:00</published><updated>2007-04-26T23:10:10.015-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='sleep'/><category scheme='http://www.blogger.com/atom/ns#' term='night owl'/><title type='text'>Night Owl Gene Discovered (Maybe)</title><content type='html'>The British newspaper Telegraph reports that there may be an "after-hours gene".  Basically this gene causes people to fall out of sync with the normal circadian cycle of being alert and awake during light hours and sleeping during darkness.&lt;br /&gt;&lt;br /&gt;My wife and I have been night owls our entire lives.  I've tried to fight it for years, but within 24 hours of not having to wake at a certain time for work I will lapse into going into a delayed sleeping pattern.  And it's not long hours of sleep either, I go to sleep between 2-3 AM and naturally wake around 11 AM.  Which puts me around 8-9 hours of sleep.  I don't need an alarm clock and my activity level has very little effect.  It's been that way for my entire life even during my youth or when I was extremely active and very fit.  It's not caused by age or my current, fairly sedentary, lifestyle.  My wife is the same, we're just a few hours out of sync I guess.  Out of step with the world.  &lt;br /&gt;&lt;br /&gt;I don't know if I want to be labeled a 'night owl' though, maybe a 'night frog'?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-3633516225168390300?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.telegraph.co.uk/news/main.jhtml?xml=/news/2007/04/27/nclock27.xml' title='Night Owl Gene Discovered (Maybe)'/><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/3633516225168390300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=3633516225168390300' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/3633516225168390300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/3633516225168390300'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/night-owl-gene-discovered-maybe.html' title='Night Owl Gene Discovered (Maybe)'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-2658609548659017213</id><published>2007-04-26T18:05:00.000-05:00</published><updated>2007-04-26T19:33:53.261-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>.NET Literals Are Implicit Instances.</title><content type='html'>In .NET literals are really just instances without a name.&lt;br /&gt;&lt;br /&gt;Many developers will add extra fields to their code when they simply want to perform an operation on a simple string or numeric literal.  This is unnecessary because .NET exposes the same methods from a literal as from an explicit instance field.  In .NET literals are implicitly treated as instances.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Arguments about factoring and embedding strings and values in your code aside, this is more about what you *can* do than what the proper way to manage literals is.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;When working with a string or numeric literal you don't need to create a new instance field to perform operations on the value.  You can call the methods directly because the literal *is* an instance.  You can call any non-static method that is exposed by the implicit type of the literal.&lt;br /&gt;&lt;br /&gt;For example, you need to compare an unknown value against a constant value that doesn't change.  The method could be written as:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white; border: solid 1px black; padding: 10px 10px 10px 10px; overflow: auto; white-space: nowrap;"&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; Contrived Literals Example 1&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;param name=&lt;/span&gt;&lt;span style="color: #396262; background: #f5fafa;"&gt;"value"&lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;bool&lt;/span&gt; IsContrivedExample1( &lt;span style="color: #000096; font-weight: bold;"&gt;int&lt;/span&gt; value )&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;int&lt;/span&gt; importantNumber &lt;span style="color: #000096; font-weight: bold;"&gt;=&lt;/span&gt; 1;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;int&lt;/span&gt; comparison &lt;span style="color: #000096; font-weight: bold;"&gt;=&lt;/span&gt; importantNumber&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;CompareTo( value );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;bool&lt;/span&gt; result;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;if&lt;/span&gt; ( comparison &lt;span style="color: #000096; font-weight: bold;"&gt;==&lt;/span&gt; 0 )&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result &lt;span style="color: #000096; font-weight: bold;"&gt;=&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;true&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;else&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result &lt;span style="color: #000096; font-weight: bold;"&gt;=&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;false&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;return&lt;/span&gt; result;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Some might look at that and not see a problem, and logically, there is no real problem.  If it's a method that doesn't get called very often the additional field creation and assignments operations don't matter.  The fields are well-named and their roles are clear.  But this is an extremely contrived example.  Most applications code-bases are generally made up of hundred's or thousands of lines of code, thereby making brevity of code your friend.&lt;br /&gt;&lt;br /&gt;Here's an example of using the numeric literal directly to perform the same operations.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white; border: solid 1px black; padding: 10px 10px 10px 10px; overflow: auto; white-space: nowrap;"&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; Contrived Literals Example 2&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;param name=&lt;/span&gt;&lt;span style="color: #396262; background: #f5fafa;"&gt;"value"&lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;bool&lt;/span&gt; IsContrivedExample2( &lt;span style="color: #000096; font-weight: bold;"&gt;int&lt;/span&gt; value )&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;return&lt;/span&gt; ( 1&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;CompareTo( value ) &lt;span style="color: #000096; font-weight: bold;"&gt;==&lt;/span&gt; 0 );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;We were able to reduce the code by 7 lines (not including braces).  Not much in this case, but let's say you have 700 lines of methods like this, you drop about 600 lines of code!  Not to mention 3 field creation and 3 assignment operations per method.&lt;br /&gt;&lt;br /&gt;Now let's take a look at the resultant IL to see what .NET thinks of the differences in code structure.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;.method public hidebysig instance bool  IsContrivedExample1(int32 'value') cil managed&lt;br /&gt;{&lt;br /&gt;  // Code size       41 (0x29)&lt;br /&gt;  .maxstack  2&lt;br /&gt;  .locals init ([0] int32 importantNumber,&lt;br /&gt;           [1] int32 comparison,&lt;br /&gt;           [2] bool result,&lt;br /&gt;           [3] bool CS$1$0000,&lt;br /&gt;           [4] bool CS$4$0001)&lt;br /&gt;  IL_0000:  nop&lt;br /&gt;  IL_0001:  ldc.i4.1&lt;br /&gt;  IL_0002:  stloc.0&lt;br /&gt;  IL_0003:  ldloca.s   importantNumber&lt;br /&gt;  IL_0005:  ldarg.1&lt;br /&gt;  IL_0006:  call       instance int32 [mscorlib]System.Int32::CompareTo(int32)&lt;br /&gt;  IL_000b:  stloc.1&lt;br /&gt;  IL_000c:  ldloc.1&lt;br /&gt;  IL_000d:  ldc.i4.0&lt;br /&gt;  IL_000e:  ceq&lt;br /&gt;  IL_0010:  ldc.i4.0&lt;br /&gt;  IL_0011:  ceq&lt;br /&gt;  IL_0013:  stloc.s    CS$4$0001&lt;br /&gt;  IL_0015:  ldloc.s    CS$4$0001&lt;br /&gt;  IL_0017:  brtrue.s   IL_001f&lt;br /&gt;  IL_0019:  nop&lt;br /&gt;  IL_001a:  ldc.i4.1&lt;br /&gt;  IL_001b:  stloc.2&lt;br /&gt;  IL_001c:  nop&lt;br /&gt;  IL_001d:  br.s       IL_0023&lt;br /&gt;  IL_001f:  nop&lt;br /&gt;  IL_0020:  ldc.i4.0&lt;br /&gt;  IL_0021:  stloc.2&lt;br /&gt;  IL_0022:  nop&lt;br /&gt;  IL_0023:  ldloc.2&lt;br /&gt;  IL_0024:  stloc.3&lt;br /&gt;  IL_0025:  br.s       IL_0027&lt;br /&gt;  IL_0027:  ldloc.3&lt;br /&gt;  IL_0028:  ret&lt;br /&gt;} // end of method LiteralsTest::IsContrivedExample1&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;.method public hidebysig instance bool  IsContrivedExample2(int32 'value') cil managed&lt;br /&gt;{&lt;br /&gt;  // Code size       19 (0x13)&lt;br /&gt;  .maxstack  2&lt;br /&gt;  .locals init ([0] bool CS$1$0000,&lt;br /&gt;           [1] int32 CS$0$0001)&lt;br /&gt;  IL_0000:  nop&lt;br /&gt;  IL_0001:  ldc.i4.1&lt;br /&gt;  IL_0002:  stloc.1&lt;br /&gt;  IL_0003:  ldloca.s   CS$0$0001&lt;br /&gt;  IL_0005:  ldarg.1&lt;br /&gt;  IL_0006:  call       instance int32 [mscorlib]System.Int32::CompareTo(int32)&lt;br /&gt;  IL_000b:  ldc.i4.0&lt;br /&gt;  IL_000c:  ceq&lt;br /&gt;  IL_000e:  stloc.0&lt;br /&gt;  IL_000f:  br.s       IL_0011&lt;br /&gt;  IL_0011:  ldloc.0&lt;br /&gt;  IL_0012:  ret&lt;br /&gt;} // end of method LiteralsTest::IsContrivedExample2&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The second example definitely has less overhead.  There are less fields being created and loaded and less logical operations.  &lt;br /&gt;&lt;br /&gt;Let's see what the IL looks like if we replace the integer literal with a constant integer that is declared in the containing class.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;.method public hidebysig instance bool  IsContrivedExample3(int32 'value') cil managed&lt;br /&gt;{&lt;br /&gt;  // Code size       19 (0x13)&lt;br /&gt;  .maxstack  2&lt;br /&gt;  .locals init ([0] bool CS$1$0000,&lt;br /&gt;           [1] int32 CS$0$0001)&lt;br /&gt;  IL_0000:  nop&lt;br /&gt;  IL_0001:  ldc.i4.1&lt;br /&gt;  IL_0002:  stloc.1&lt;br /&gt;  IL_0003:  ldloca.s   CS$0$0001&lt;br /&gt;  IL_0005:  ldarg.1&lt;br /&gt;  IL_0006:  call       instance int32 [mscorlib]System.Int32::CompareTo(int32)&lt;br /&gt;  IL_000b:  ldc.i4.0&lt;br /&gt;  IL_000c:  ceq&lt;br /&gt;  IL_000e:  stloc.0&lt;br /&gt;  IL_000f:  br.s       IL_0011&lt;br /&gt;  IL_0011:  ldloc.0&lt;br /&gt;  IL_0012:  ret&lt;br /&gt;} // end of method LiteralsTest::IsContrivedExample3&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Hmm, aside from the method name, the IL is exactly identical.  It appears that there is no penalty for embedding a literal in our method nor is there a benefit for using a constant.&lt;br /&gt;&lt;br /&gt;I used to be a steadfast believer in placing *all* my literals in constant fields.  Unless the field needs to be reused elsewhere, keeping literals with the methods that utilize them, along with judicious commenting, will keep my code-base cleaner and easier to manage.&lt;br /&gt;&lt;br /&gt;Using literals in your code is up to your discretion and coding standards.  I hope that you were able to use this article to expand your .NET coding repertoire.&lt;br /&gt;&lt;br /&gt;Below is a class containing several examples of calling instance methods directly against string and integer literals.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white; border: solid 1px black; padding: 10px 10px 10px 10px; overflow: auto; white-space: nowrap;"&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;class&lt;/span&gt; &lt;span style="color: #4f4f4f; font-weight: bold;"&gt;LiteralsTest&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;const&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;int&lt;/span&gt; ContrivedValue &lt;span style="color: #000096; font-weight: bold;"&gt;=&lt;/span&gt; 1;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; Contrived Literals Example 1&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;param name=&lt;/span&gt;&lt;span style="color: #396262; background: #f5fafa;"&gt;"value"&lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;bool&lt;/span&gt; IsContrivedExample1( &lt;span style="color: #000096; font-weight: bold;"&gt;int&lt;/span&gt; value )&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;int&lt;/span&gt; importantNumber &lt;span style="color: #000096; font-weight: bold;"&gt;=&lt;/span&gt; 1;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;int&lt;/span&gt; comparison &lt;span style="color: #000096; font-weight: bold;"&gt;=&lt;/span&gt; importantNumber&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;CompareTo( value );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;bool&lt;/span&gt; result;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;if&lt;/span&gt; ( comparison &lt;span style="color: #000096; font-weight: bold;"&gt;==&lt;/span&gt; 0 )&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; result &lt;span style="color: #000096; font-weight: bold;"&gt;=&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;true&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;else&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; result &lt;span style="color: #000096; font-weight: bold;"&gt;=&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;false&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;return&lt;/span&gt; result;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; Contrived Literals Example 2&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;param name=&lt;/span&gt;&lt;span style="color: #396262; background: #f5fafa;"&gt;"value"&lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;bool&lt;/span&gt; IsContrivedExample2( &lt;span style="color: #000096; font-weight: bold;"&gt;int&lt;/span&gt; value )&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;return&lt;/span&gt; ( 1&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;CompareTo( value ) &lt;span style="color: #000096; font-weight: bold;"&gt;==&lt;/span&gt; 0 );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; Contrived Literals Example 3&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;param name=&lt;/span&gt;&lt;span style="color: #396262; background: #f5fafa;"&gt;"value"&lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;bool&lt;/span&gt; IsContrivedExample3( &lt;span style="color: #000096; font-weight: bold;"&gt;int&lt;/span&gt; value )&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;return&lt;/span&gt; ( ContrivedValue&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;CompareTo( value ) &lt;span style="color: #000096; font-weight: bold;"&gt;==&lt;/span&gt; 0 );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; Tests the string literals.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;void&lt;/span&gt; TestStringLiterals()&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( &lt;span style="color: blue;"&gt;"Testing String Literals"&lt;/span&gt; );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( &lt;span style="color: blue;"&gt;"fizz"&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;CompareTo( &lt;span style="color: blue;"&gt;"buzz"&lt;/span&gt; ) );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( &lt;span style="color: blue;"&gt;"fizz"&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;CompareTo( &lt;span style="color: blue;"&gt;"fizz"&lt;/span&gt; ) );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( &lt;span style="color: blue;"&gt;"buzz"&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;CompareTo( &lt;span style="color: blue;"&gt;"fizz"&lt;/span&gt; ) );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( &lt;span style="color: blue;"&gt;"TypeCode: {0}"&lt;/span&gt;, &lt;span style="color: blue;"&gt;"fizz"&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;GetTypeCode() );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( &lt;span style="color: blue;"&gt;"Type: {0}"&lt;/span&gt;, &lt;span style="color: blue;"&gt;"fizz"&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;GetType() );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( &lt;span style="color: blue;"&gt;"HashCode: {0}"&lt;/span&gt;, &lt;span style="color: blue;"&gt;"fizz"&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;GetHashCode() );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( &lt;span style="color: blue;"&gt;"fizz"&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Equals( &lt;span style="color: blue;"&gt;"buzz"&lt;/span&gt; ) );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( &lt;span style="color: blue;"&gt;"fizz"&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Equals( &lt;span style="color: blue;"&gt;"fizz"&lt;/span&gt; ) );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( &lt;span style="color: blue;"&gt;"buzz"&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Equals( &lt;span style="color: blue;"&gt;"fizz"&lt;/span&gt; ) );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( &lt;span style="color: blue;"&gt;"fizz"&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Length );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( &lt;span style="color: blue;"&gt;"Character at index 0: {0}"&lt;/span&gt;, &lt;span style="color: blue;"&gt;"fizz"&lt;/span&gt;[ 0 ] ); &lt;span style="color: green;"&gt;//wha, wha, what? ;-)&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( &lt;span style="color: blue;"&gt;"Clone(): {0}"&lt;/span&gt;, &lt;span style="color: blue;"&gt;"fizz"&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Clone() );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( &lt;span style="color: blue;"&gt;"Contains(\"iz\"): {0}"&lt;/span&gt;, &lt;span style="color: blue;"&gt;"fizz"&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Contains( &lt;span style="color: blue;"&gt;"iz"&lt;/span&gt; ) );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// We are replacing the "working" variable with the string literal value.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// It's a bit of a contrived example, but the method works.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;char&lt;/span&gt;[] working &lt;span style="color: #000096; font-weight: bold;"&gt;=&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;new&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;char&lt;/span&gt;[] {&lt;span style="color: blue;"&gt;'b'&lt;/span&gt;, &lt;span style="color: blue;"&gt;'u'&lt;/span&gt;, &lt;span style="color: blue;"&gt;'z'&lt;/span&gt;, &lt;span style="color: blue;"&gt;'z'&lt;/span&gt;};&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;"fizz"&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;CopyTo( 0, working, 0, 4 );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( working );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; Tests the integer literals.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;void&lt;/span&gt; TestIntegerLiterals()&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( &lt;span style="color: blue;"&gt;"Testing Integer Literals"&lt;/span&gt; );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( 1&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;CompareTo( 0 ) );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( 1&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;CompareTo( 1 ) );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( 0&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;CompareTo( 1 ) );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// Cannot implicitly convert type 'int' to 'string'.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;string&lt;/span&gt; x &lt;span style="color: #000096; font-weight: bold;"&gt;=&lt;/span&gt; 1&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;ToString();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( &lt;span style="color: blue;"&gt;"ToString(): {0}"&lt;/span&gt;, x );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( &lt;span style="color: blue;"&gt;"TypeCode: {0}"&lt;/span&gt;, 1&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;GetTypeCode() );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( &lt;span style="color: blue;"&gt;"Type: {0}"&lt;/span&gt;, 1&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;GetType() );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( &lt;span style="color: blue;"&gt;"HashCode: {0}"&lt;/span&gt;, 1&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;GetHashCode() );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( 1&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Equals( 0 ) );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( 1&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Equals( 1 ) );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( 0&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Equals( 1 ) );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; Runs the tests.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;void&lt;/span&gt; RunTests()&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TestStringLiterals();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TestIntegerLiterals();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-2658609548659017213?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/2658609548659017213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=2658609548659017213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2658609548659017213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2658609548659017213'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/in.html' title='.NET Literals Are Implicit Instances.'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-2438345239429141925</id><published>2007-04-26T16:37:00.000-05:00</published><updated>2007-04-26T19:34:52.645-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><category scheme='http://www.blogger.com/atom/ns#' term='entertainment'/><title type='text'>Winamp in a Window</title><content type='html'>Unify your &lt;a href="http://www.winamp.com" target="_blank"&gt;Winamp&lt;/a&gt; UI with the Winamp Single GUI skin.&lt;br /&gt;&lt;br /&gt;Winamp is one of the most popular 3rd party media players for Windows.  With excellent integrated support for a huge variety of codecs, excellent media management capabilities, and simple streaming media navigation it is one of my first installations when I setup a clean system.  Although, I prefer Media Player for watching video, I exclusively use Winamp for audio.  One of the features that has always set Winamp apart from its competition is it's well established skinning capabilities.  There are probably thousands of skins available for Winamp that can satisfy any computer users aesthetic sensibilities.&lt;br /&gt;&lt;br /&gt;I think that I have tried every variation of these skins at some point over the past couple years, to varying levels of satisfaction but have always returned to the default Modern skin that ships with Winamp.  It's has a solid feel to it and is easy to navigate, with medium sized buttons that are easy to read and logically laid out.  Unfortunately, the one thing that I never liked about any of the Winamp skins was that all the sections of the UI are seperate, albeit dockable, windows.  The player, library, play list, equalizer, now playing and video are all seperate windows that can float around your screen.&lt;br /&gt;&lt;br /&gt;Enter the &lt;a href="http://www.winamp.com/skins/details.php?id=147714" target="_blank"&gt;Winamp Single GUI&lt;/a&gt; skin which uses the Modern skin as it's default look but combines all the major elements into one simple to navigate window.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.winamp.com/skins/details.php?id=147714" target="_blank"&gt;&lt;img src="http://download.nullsoft.com/customize/component/3/2006/5/20/S/large_image/Winamp_Single_GUI.jpg" alt="Screenshot of the Winamp Single GUI skin" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Download it and give it shot. Personally, I think Winamp should ship this as one of their default skin options.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-2438345239429141925?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.winamp.com/skins/details.php?id=147714' title='Winamp in a Window'/><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/2438345239429141925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=2438345239429141925' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2438345239429141925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2438345239429141925'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/unify-your-winamp-ui-with-winamp-single.html' title='Winamp in a Window'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-6684938558580660467</id><published>2007-04-26T13:29:00.000-05:00</published><updated>2007-04-26T19:35:56.408-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Doodle Code With Snippet Compiler</title><content type='html'>&lt;a href="http://www.sliver.com/dotnet/SnippetCompiler/" target="_blank"&gt;Snippet Compiler&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Have you ever wanted to test out an idea for a bit of code that is too small to bother with creating a solution for?&lt;br /&gt;&lt;br /&gt;Snippet Compiler is a light-weight IDE for the .NET Framework.  It has a text-editor that supports some intellisense and code folding.  You can build directly from the tool and receive error messages from the compiler in a VS.Net-like Errors tab.  Overall, if you have any experience working in the VS.Net environment then you will immediately be able to use plumb the depths of this tool in a few minutes.  It's very slick and easy to use.  I've personally used it many times over the past couple years whenever I wanted to try out a snippet of code or doodle something to see if it worked before I added it into my working codebase.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-6684938558580660467?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/6684938558580660467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=6684938558580660467' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/6684938558580660467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/6684938558580660467'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/snippet-compiler-have-you-ever-wanted.html' title='Doodle Code With Snippet Compiler'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-369093928443666969</id><published>2007-04-26T12:27:00.000-05:00</published><updated>2007-04-26T19:36:20.389-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='star wars'/><category scheme='http://www.blogger.com/atom/ns#' term='robot chicken'/><category scheme='http://www.blogger.com/atom/ns#' term='entertainment'/><category scheme='http://www.blogger.com/atom/ns#' term='funny'/><title type='text'>Robot Chicken: Jedi Bush</title><content type='html'>&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/UwQV_JJXulM"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/UwQV_JJXulM" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;Heh heh heh, taco's rule.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-369093928443666969?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/369093928443666969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=369093928443666969' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/369093928443666969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/369093928443666969'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/robot-chicken-jedi-bush-heh-heh-heh.html' title='Robot Chicken: Jedi Bush'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-7233870694265673123</id><published>2007-04-26T12:20:00.001-05:00</published><updated>2007-04-26T19:36:45.061-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='star wars'/><category scheme='http://www.blogger.com/atom/ns#' term='robot chicken'/><category scheme='http://www.blogger.com/atom/ns#' term='entertainment'/><category scheme='http://www.blogger.com/atom/ns#' term='funny'/><title type='text'>Robot Chicken: Empire Strikes Back</title><content type='html'>&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/fVFI_Ra68F0"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/fVFI_Ra68F0" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-7233870694265673123?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/7233870694265673123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=7233870694265673123' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/7233870694265673123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/7233870694265673123'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/robot-chicken-empire-strikes-back.html' title='Robot Chicken: Empire Strikes Back'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-4849758756513766666</id><published>2007-04-26T12:18:00.000-05:00</published><updated>2007-04-26T19:37:35.020-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='star wars'/><category scheme='http://www.blogger.com/atom/ns#' term='robot chicken'/><category scheme='http://www.blogger.com/atom/ns#' term='entertainment'/><category scheme='http://www.blogger.com/atom/ns#' term='funny'/><title type='text'>Robot Chicken: Darth Vader Calls The Emperor.</title><content type='html'>&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/fZHO7cB9WsY"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/fZHO7cB9WsY" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;Go for papa Palpatine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-4849758756513766666?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/4849758756513766666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=4849758756513766666' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/4849758756513766666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/4849758756513766666'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/robot-chicken-darth-vader-calls-emporer.html' title='Robot Chicken: Darth Vader Calls The Emperor.'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-1867160569695592011</id><published>2007-04-25T15:32:00.000-05:00</published><updated>2007-04-26T19:37:58.171-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Vista: Google Edition, or Yahoo! Edition, or ???</title><content type='html'>One of the weaknesses of the fragmentation of Linux into a &lt;a href="http://dictionary.reference.com/browse/google" target="_blank" alt="It is a word too, y'know."&gt;google&lt;/a&gt; of different and competing versions has been confusion on exactly which distro is the "One True Way".&lt;br /&gt;&lt;br /&gt;&lt;div style="overflow: auto; text-align: center;"&gt;&lt;a href="http://kde-files.org/CONTENT/content-files/44218-linuxdistrotimeline-7.2.png" target="_blank"&gt;&lt;img style="height: 75%; width: 75%;" src="http://kde-files.org/CONTENT/content-files/44218-linuxdistrotimeline-7.2.png"  alt="Linux distro timeline." /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;As of early 2007 there are about 62 different versions of Linux available.  And those are just the bigger fish in the pond.  I'm all about exposing myself to new and different ways of doing things but that's just ridiculous.  I've played with distros by Red Hat, Ubuntu, Mandrake, Debian, Slackware, and LFS over the years and they've all made me want to punch myself in the face.  And no, it's not (just) because I am a Windows Weenie unable to handle anything without a graphical interface, but mostly because each version had significantly different ways of doing things.  The distros could even change drastically between releases.  Directories would be organized differently, installations would use different formats, some OSS zealot on the distro team would remove some critical (IMO) codec’s, etc.  &lt;br /&gt;&lt;br /&gt;The problem is not that there are different distributions, but that they differentiate on insignificant details.  Only Knoppix has differentiated by enabling developers to create custom tailored distro's that can be pre-equiped with all the software for a specific use.  Lisp Knoppix, Monoppix, Games Knoppix, MythTV Knoppix, etc.  The value to be found here is a common foundation already set up with the basic software to do what the user wants to do.&lt;br /&gt;&lt;br /&gt;When I install Lisp Knoppix or Monoppix distro they are fundamentally the same as far as the base installation goes.  The directory structure is the same; the fundamentals are all in place.  I didn’t need to spend any additional time figuring out which installation management system to use, one Knoppix system is the same as another except for what matters to me, the user software.&lt;br /&gt;&lt;br /&gt;This is where Microsoft could benefit.  They have *the* industry standard for stable structures.  When you install any version of a Microsoft OS, there is a C: drive.  I can't even recall a time before there was a "Program Files" directory.  The shell and API are consistent.  (PowerShell is going to fix the problem of the current extremely limited console of Windows.)  The Windows updater is about the simplest and cleanest installer known to man (IMO).&lt;br /&gt;&lt;br /&gt;While Linux is fragmenting because of competition between vendors, Microsoft is fragmenting from within.  Microsoft has been slowly declining in the clarity of their basic vision of a fundamental Windows OS since Windows 2000.  Their releases have steadily been getting more and more cryptic.  Windows 2000 was as clear as one could get, no "Home", "Professional" or "Media Center".  Just "Workstation" and "Server", nice, “Advanced” server doesn’t count here.  With &lt;a href="http://www.microsoft.com/windows/products/windowsvista/editions/default.mspx" target="_blank"&gt;Vista&lt;/a&gt; we get "Ultimate", "Home Premium", "Home Basic", "Business", "Enterprise".  Well, that cleared things up.  Microsoft is doing the opposite of Linux, they are fragmenting themselves.&lt;br /&gt;&lt;br /&gt;So close yet so far away.  &lt;a href=”http://www.microsoft.com/presspass/newsroom/winxp/WinXPStarterFS.mspx” target=”_blank”&gt;Windows XP Starter Edition&lt;/a&gt; was a forced and seemingly half-hearted response by Microsoft to comply with the EU requirement to provide a minimal XP release.  Yet it’s very &lt;a href=”http://en.wikipedia.org/wiki/Windows_XP#Windows_XP_Starter_Edition” target=”_blank”&gt;restricted and limited&lt;/a&gt; as to be useless as a base platform for developing custom releases.&lt;br /&gt;&lt;br /&gt;To prove that larger corporations don’t always learn from their mistakes, enter &lt;a href=”http://www.microsoft.com/windows/products/windowsvista/editions/starter/default.mspx” target=”_blank”&gt;Vista Starter Edition&lt;/a&gt;.  Basically it’s the same stupid decisions on hardware and concurrent application restrictions as they made with the XP version.&lt;br /&gt;&lt;br /&gt;Why not remove the restrictions and open the license so that third-party vendors can re-distribute their own version of Vista?  It can’t dilute the brand anymore than Microsoft has done to their self.  And it would shut up the EU and anti-monopoly zealots by enabling ISVs to bundle their software for re-sale to end-users while still providing a revenue model to Microsoft.&lt;br /&gt; &lt;br /&gt;Make Vista a PLATFORM for ISVs.  Don’t release multiple versions of Vista, sell one base version with additional extension packs, ala the &lt;a href=”http://www.microsoft.com/windows/plus/PlusHome.asp” target=”_blank”&gt;Plus! SuperPack&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I can almost imagine that glorious day.  I boot my Google Vista workstation for the first time.  Log in; see that I have a few new GMail messages.  Launch Firefox and see my bookmarks are all synced and ready to click.  Open Picasa and see my wife’s pictures loaded and ready to upload to Flickr.  &lt;br /&gt;&lt;br /&gt;Ahh, maybe someday.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-1867160569695592011?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.codinghorror.com/blog/archives/000842.html' title='Vista: Google Edition, or Yahoo! Edition, or ???'/><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/1867160569695592011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=1867160569695592011' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/1867160569695592011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/1867160569695592011'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/vista-google-edition-or-yahoo-edition.html' title='Vista: Google Edition, or Yahoo! Edition, or ???'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-2674401506115971503</id><published>2007-04-24T20:40:00.000-05:00</published><updated>2007-04-26T19:38:25.145-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='entertainment'/><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><title type='text'>90 Days W/O Computer Games.</title><content type='html'>World of Warcraft has ruined my life.&lt;br /&gt;&lt;br /&gt;Actually, it hasn't but I have to blame someone else for wasting so much time on something that I knew full-well when I started had no intrinsic value.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;No World of Warcraft.&lt;br /&gt;No StarCraft.&lt;br /&gt;No Warcraft.&lt;br /&gt;No Guild Wars.&lt;br /&gt;No Unreal.&lt;br /&gt;No computer games.&lt;br /&gt;&lt;br /&gt;Playing games in a social context will be permissible.  For example, playing Nintendo with family or X-Box with friends.&lt;br /&gt;&lt;br /&gt;The point is to break the chain of time sinks that are most modern computer games. &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This is the promise I made to my wife and myself.  I don't feel like my playing habits had a negative effect, yet.  But I looked at the staggering number of hours I had spent in Azeroth and I knew I had to change something.&lt;br /&gt;&lt;br /&gt;My abstinence begins today April 24th, 2007 and ends July 24th, 2007.&lt;br /&gt;&lt;br /&gt;Wish me luck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-2674401506115971503?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://en.wikipedia.org/wiki/Game_addiction' title='90 Days W/O Computer Games.'/><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/2674401506115971503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=2674401506115971503' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2674401506115971503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2674401506115971503'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/90-days-wo-computer-games.html' title='90 Days W/O Computer Games.'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-2572845361156617626</id><published>2007-04-24T19:36:00.000-05:00</published><updated>2007-04-26T19:39:24.996-05:00</updated><title type='text'>PowerShell and I just took our first steps towards what looks like a beautiful friendship.</title><content type='html'>I've been called a "Tools Guy".  Not my words.  I’m pretty sure it wasn’t a conspiracy either.&lt;br /&gt;&lt;br /&gt;My best guess is that because I am fairly lazy, as I believe all good software developers should strive to be, and am not in the business of making work more difficult for myself; I'm always be looking for ways to off-load my efforts to the computer.  That's why I check out different IDEs and databases and Nth generation languages to make it easier for me to do fun stuff with computer, and the less-fun stuff for the people who pay me.  Long ago I learned that tools can help me to continue to be lazy.  But to truly reap the benefit's of long term laziness I have to put in a little bit of work up front.  So I invest time in playing with as many software tools as possible hoping to find a gem that can. Since I share this information with my fellow developers I guess I picked up the reputation along the way.  It’s a bit ironic that ones laziness can lead to getting called anything other than unemployed.&lt;br /&gt;&lt;br /&gt;Why would a lazy sod like me think that something named PowerShell could be friends?  PowerShell sounds so dynamic and important.  I mean, the tool has to be important, they didn’t put the word ‘power’ in there by accident, I think.&lt;br /&gt;&lt;br /&gt;It all started back when PowerShell had the nonsense name Monad.  That doesn’t even mean anything; much less give you a sense of authority.  Maybe that’s it, like giving a bouncer a name like ‘Tiny’.  Any road, I downloaded Monad and was immediately overwhelmed with a bunch of non-fun things that people were paying me to do, so I ignored it.  Beside that it had a stupid name.&lt;br /&gt;&lt;br /&gt;Several months later Microsoft officially released Monad with a much more important sounding name and I continued to ignore it, but the blogs were buzzing.  Although I download and install it regardless, my packrat side is in constant battle with my lazy side.&lt;br /&gt;&lt;br /&gt;Then today, I just need to do something very, very tiny.  I need to quickly add dates together for a schedule I am planning.  Normally I would just crack open Excel and throw a simple SUM() method into the first field, get my value, close Excel and move on.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;=SUM(NOW(),90)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;But that was too boring; I have a tool that I hadn’t played with.  That situation needed to be rectified.  I cracked open PowerShell, and having read someplace that it uses .NET as it’s underlying API I typed the C# call for the AddDays method.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Windows PowerShell&lt;br /&gt;Copyright (C) 2006 Microsoft Corporation. All rights reserved.&lt;br /&gt;&lt;br /&gt;PS X:\Home\mhall&gt; System.DateTime.Now.AddDays(90)&lt;br /&gt;The term 'System.DateTime.Now.AddDays' is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again.&lt;br /&gt;At line:1 char:28&lt;br /&gt;+ System.DateTime.Now.AddDays( &lt;&lt;&lt;&lt; 90)&lt;br /&gt;PS X:\Home\mhall&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Hmm, that wasn't my desired result.  Fortunately, it looks cool, and I was in a curious mood so I investigated.  By 'investigated' I Google'd for the answer.&lt;br /&gt;&lt;br /&gt;&lt;a href=”http://blogs.msdn.com/powershell/archive/2006/09/17/The-Wonders-of-Date-Math-using-Windows-PowerShell.aspx” target=”_blank&gt;The Wonders of Date Math using Windows Powershell&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;That looked promising.&lt;br /&gt;&lt;br /&gt;Apparently, PowerShell has a very different syntax that looks something like C# beat up Ruby and took its lunch money.  But that’s okay; Ruby is been getting a bit uppity lately.  Now we are cooking with PowerShell.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Windows PowerShell&lt;br /&gt;Copyright (C) 2006 Microsoft Corporation. All rights reserved.&lt;br /&gt;&lt;br /&gt;PS X:\Home\mhall&gt; [System.DateTime]::Now.AddDays(90)&lt;br /&gt;&lt;br /&gt;Monday, July 23, 2007 8:24:48 PM&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PS X:\Home\mhall&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;With a little bit of new syntax and a new tool I knocked 3 steps out of what was already a simple process.  I love tools that make things easier.  &lt;br /&gt;&lt;br /&gt;One more tool in my belt, but this one will take me a while before I feel comfortable telling anybody about.  No good talking about tools that you haven’t fully mastered.&lt;br /&gt;&lt;br /&gt;Uhm, yeah.  Nevermind.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-2572845361156617626?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blogs.msdn.com/powershell/archive/2006/09/17/The-Wonders-of-Date-Math-using-Windows-PowerShell.aspx' title='PowerShell and I just took our first steps towards what looks like a beautiful friendship.'/><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/2572845361156617626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=2572845361156617626' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2572845361156617626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2572845361156617626'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/powershell-and-i-just-took-our-first.html' title='PowerShell and I just took our first steps towards what looks like a beautiful friendship.'/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-2566482715159900478</id><published>2007-04-24T15:04:00.000-05:00</published><updated>2007-04-24T15:17:37.381-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'></title><content type='html'>Fun with Explorer Toolbar development.&lt;br /&gt;&lt;br /&gt;When the component is built and registered Explorer seems to be caching the component somewhere and does not replace the component despite the previous version being unregistered.  &lt;br /&gt;&lt;br /&gt;The only way I've been able to get around this is to manually kill the running "explorer.exe" process and restart a new Explorer session.&lt;br /&gt;&lt;br /&gt;After building the Explorer bar project, bring up the Windows Task Manager using the Ctrl+Shift+Esc chord.  Then under the Processes tab find "explorer.exe", right click and select "End Process".  Your running VS.Net process should not be affected, but your taskbar will noticeably disappear.  To resurrect Explorer, use the Alt+F, N chord to bring up the New Task dialog.  Simply enter "explorer", without the quotes, then click OK.  Your taskbar will reappear and your Explorer bar should be using the correct version.&lt;br /&gt;&lt;br /&gt;I like to think that there is a better way to do this.  &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"A good plan executed today is better than a perfect plan executed at some indefinite point in the future."&lt;br /&gt;&lt;br /&gt;- General George Patton Jr&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-2566482715159900478?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/2566482715159900478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=2566482715159900478' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2566482715159900478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2566482715159900478'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/fun-with-explorer-toolbar-development.html' title=''/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-7275817317372246880</id><published>2007-04-23T22:45:00.000-05:00</published><updated>2007-04-23T22:59:41.760-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sun'/><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='entertainment'/><category scheme='http://www.blogger.com/atom/ns#' term='nasa'/><title type='text'></title><content type='html'>&lt;a href="http://sunearth.gsfc.nasa.gov/sunearthday/media_viewer/flash.html" target="_blank"&gt;NASA Sun Earth Media Viewer&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Daily updated images of our celestial center, Sol.  Click on an image under the Images tab and then download the full-size image.  Use the CANOPUS image as a wallpaper and pretend that you are on one of those sci-fi shows.  &lt;br /&gt;&lt;br /&gt;"Captain, CANOPUS is reporting abnormal energy fluctuations.  We need to reverse the polarity."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-7275817317372246880?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://images.google.com/imgres?imgurl=http://www.inkycircus.com/jargon/images/sunearth_viewer_1.jpg&amp;imgrefurl=http://www.inkycircus.com/jargon/humanity_is_but_a_speck_of_dust/index.html&amp;h=317&amp;w=470&amp;sz=64&amp;hl=en&amp;start=19&amp;um=1&amp;tbnid=6GzGn2LW0oadoM:&amp;tbn' title=''/><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/7275817317372246880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=7275817317372246880' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/7275817317372246880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/7275817317372246880'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/nasa-sun-earth-media-viewer-daily.html' title=''/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-1873714948321779504</id><published>2007-04-23T17:23:00.000-05:00</published><updated>2007-04-23T19:03:24.764-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'></title><content type='html'>Fun with COM Interop.&lt;br /&gt;&lt;br /&gt;The joy of registering .NET components for COM Interop is a most masochistic delight.&lt;br /&gt;&lt;br /&gt;I am creating an Explorer extension for filtering the displayed files and folders to user-specified criteria.  Basically, I want a simple Explorer bar not unlike the Google or Yahoo! or the myriad of other tool bar vendors.  I am calling the tool, ExplorerFilterBar. Clever, huh?&lt;br /&gt;&lt;br /&gt;After no small amount of cursing, here are the steps I took to get my toolbar running.  Not working, just running. :-)&lt;br /&gt;&lt;br /&gt;I begin by creating my ExplorerFilterBar C# Library project.  I will eventually set it up for COM Interop and other stuff but we will get back to that.&lt;br /&gt;&lt;br /&gt;My jumping off point is using the BandObjectLib, created by Pavel Zolnikov on CodeProject.com, for the basis of the Explorer Band.  The only changes I made to the source were to recompile the application in .NET 2.0.  The original source for the base band object can be found here: &lt;a href="http://www.codeproject.com/csharp/dotnetbandobjects.asp" target="_blank"&gt;Extending Explorer with Band Objects using .NET and Windows Forms&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To use the BandObjectLib in my shell application I have to register it for COM Interop.  I did this by copying the BandObjectLib.dll to a new folder and registering and creating a new type library.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;C:\Program Files\BandObjectLib\bin&gt;regasm /tlb BandObjectLib.dll&lt;br /&gt;Microsoft (R) .NET Framework Assembly Registration Utility 2.0.50727.1318&lt;br /&gt;Copyright (C) Microsoft Corporation 1998-2004.  All rights reserved.&lt;br /&gt;&lt;br /&gt;Types registered successfully&lt;br /&gt;Assembly exported to 'C:\Program Files\BandObjectLib\bin\BandObjectLib.tlb', and the type library was registered successfully&lt;br /&gt;&lt;br /&gt;C:\Program Files\BandObjectLib\bin&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now we have a registered COM component that I will be able to extend to create Explorer bars.  I can verify that the COM wrapper has been created by checking the references dialog and looking for "BandObjectLib".  If it's there you are in good shape, if not, close VS.Net and then try again.&lt;br /&gt;&lt;br /&gt;To begin creating my new toolbar I need to add a reference to the BandObjectLib.dll that I just registered with COM.&lt;br /&gt;&lt;br /&gt;With my new reference I can create a new UserControl so I have a designer window for my toolbar.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;!--&lt;br /&gt;{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red0\green0\blue150;\red255\green255\blue255;\red0\green0\blue0;\red79\green79\blue79;\red0\green0\blue255;\red92\green155\blue155;\red245\green250\blue250;\red57\green98\blue98;}??\fs16 \cf1 {\b using}\cf0  System\cf1 {\b .}\cf0 Runtime\cf1 {\b .}\cf0 InteropServices;\par ??\cf1 {\b using}\cf0  BandObjectLib;\par ??\par ??\cf1 {\b namespace}\cf0  FrogsBrain\cf1 {\b .}\cf0 ExplorerFilterBar\par ??\{\par ??    [\cf4 {\b Guid}\cf0 ( \cf5 "29CF65E4-A7F8-4352-B55A-7EE413A64743"\cf0  )]\par ??    [\cf4 {\b BandObject}\cf0 ( \cf5 "Explorer Filter Bar"\cf0 , \cf4 {\b BandObjectStyle}\cf1 {\b .}\cf0 Horizontal \cf1 {\b |}\cf0  \cf4 {\b BandObjectStyle}\cf1 {\b .}\cf0 ExplorerToolbar \cf1 {\b |}\cf0  \cf4 {\b BandObjectStyle}\cf1 {\b .}\cf0 TaskbarToolBar, HelpText \cf1 {\b =}\cf0  \cf5 "Filter the contents of the Explorer window."\cf0  )]\par ??    \cf1 {\b public}\cf0  \cf1 {\b partial}\cf0  \cf1 {\b class}\cf0  \cf4 {\b ExplorerFilterBarControl}\cf0  : \cf4 {\b BandObject}\par ??\cf0     \{\par ??        \cf6\cb7\highlight7 ///\cf0  \cf6 &amp;lt;summary&amp;gt;\par ??\cf0\cb0\highlight0         \cf6\cb7\highlight7 ///\cf0  Initializes a new instance of the \cf6 &amp;lt;see cref=\cf8 "ExplorerFilterBarControl"\cf6 /&amp;gt;\cf0  class.\par ??\cb0\highlight0         \cf6\cb7\highlight7 ///\cf0  \cf6 &amp;lt;/summary&amp;gt;\par ??\cf0\cb0\highlight0         \cf1 {\b public}\cf0  ExplorerFilterBarControl()\par ??        \{\par ??            InitializeComponent();\par ??        \}\par ??    \}\par ??\}}&lt;br /&gt;--&gt;&lt;br /&gt;&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white; border: solid 1px black; padding: 10px 10px 10px 10px; overflow: auto; white-space: nowrap;"&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;using&lt;/span&gt; System&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Runtime&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;InteropServices;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;using&lt;/span&gt; BandObjectLib;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;namespace&lt;/span&gt; FrogsBrain&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;ExplorerFilterBar&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Guid&lt;/span&gt;( &lt;span style="color: blue;"&gt;"29CF65E4-A7F8-4352-B55A-7EE413A64743"&lt;/span&gt; )]&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #4f4f4f; font-weight: bold;"&gt;BandObject&lt;/span&gt;( &lt;span style="color: blue;"&gt;"Explorer Filter Bar"&lt;/span&gt;, &lt;span style="color: #4f4f4f; font-weight: bold;"&gt;BandObjectStyle&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Horizontal &lt;span style="color: #000096; font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: #4f4f4f; font-weight: bold;"&gt;BandObjectStyle&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;ExplorerToolbar &lt;span style="color: #000096; font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: #4f4f4f; font-weight: bold;"&gt;BandObjectStyle&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;TaskbarToolBar, HelpText &lt;span style="color: #000096; font-weight: bold;"&gt;=&lt;/span&gt; &lt;span style="color: blue;"&gt;"Filter the contents of the Explorer window."&lt;/span&gt; )]&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;partial&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;class&lt;/span&gt; &lt;span style="color: #4f4f4f; font-weight: bold;"&gt;ExplorerFilterBarControl&lt;/span&gt; : &lt;span style="color: #4f4f4f; font-weight: bold;"&gt;BandObject&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; Initializes a new instance of the &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;see cref=&lt;/span&gt;&lt;span style="color: #396262; background: #f5fafa;"&gt;"ExplorerFilterBarControl"&lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; class.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #000096; font-weight: bold;"&gt;public&lt;/span&gt; ExplorerFilterBarControl()&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Drag a button onto the form designed and set its Dock property to "Fill".  You can delete it later, it's just for demonstration.&lt;br /&gt;&lt;br /&gt;Now you are ready to setup for project for COM Interop.&lt;br /&gt;&lt;br /&gt;The changes we are about to make have to be applied for the "Debug" and "Release" builds, so set your Project Property Configuration to "All Configurations".&lt;br /&gt;&lt;br /&gt;Under the "Application" tab, click the button "Assembly &lt;u&gt;I&lt;/u&gt;nformation".  In the dialog box that is displayed check the "&lt;u&gt;M&lt;/u&gt;ake assembly COM-Visible".  Then click "OK".&lt;br /&gt;&lt;br /&gt;Create a strong name key file for the project.&lt;br /&gt;&lt;br /&gt;Set the project to register and GAC your DLL.  Add the following "Post Build" event.  Obviously you will need to update the paths as appropriate for your configuration.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd "$(TargetDir)"&lt;br /&gt;"c:\windows\microsoft.net\framework\v2.0.50727\regasm.exe" /u $(TargetFileName)&lt;br /&gt;"c:\program files\microsoft visual studio 8\sdk\v2.0\bin\gacutil.exe" /uf $(TargetName)&lt;br /&gt;"c:\program files\microsoft visual studio 8\sdk\v2.0\bin\gacutil.exe" /if $(TargetFileName)&lt;br /&gt;"c:\windows\microsoft.net\framework\v2.0.50727\regasm.exe" $(TargetFileName)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Under the Build tab, check the "Register for &lt;u&gt;C&lt;/u&gt;OM interop" box.&lt;br /&gt;&lt;br /&gt;And for the last property dialog change, set the start action under the Debug tab to launch the Window's Explorer when you start the debugger.&lt;br /&gt;&lt;br /&gt;The final step to setting up your DLL for COM Interop is the manually open your AssemblyInfo.cs file and set the ComVisible attribute to True.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;!--&lt;br /&gt;{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red0\green128\blue0;\red255\green255\blue255;\red0\green0\blue0;\red79\green79\blue79;\red0\green0\blue150;}??\fs16 \cf1 // Setting ComVisible to false makes the types in this assembly not visible \par ??// to COM components.  If you need to access a type in this assembly from \par ??// COM, set the ComVisible attribute to true on that type.\par ??\par ??\cf0 [assembly : \cf4 {\b ComVisible}\cf0 ( \cf5 {\b true}\cf0  )]}&lt;br /&gt;--&gt;&lt;br /&gt;&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white; border: solid 1px black; padding: 10px 10px 10px 10px; overflow: auto; white-space: nowrap;"&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: teal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: green;"&gt;// Setting ComVisible to false makes the types in this assembly not visible &lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: teal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="color: green;"&gt;// to COM components.&amp;nbsp; If you need to access a type in this assembly from &lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: teal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="color: green;"&gt;// COM, set the ComVisible attribute to true on that type.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: teal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: teal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;[assembly : &lt;span style="color: #4f4f4f; font-weight: bold;"&gt;ComVisible&lt;/span&gt;( &lt;span style="color: #000096; font-weight: bold;"&gt;true&lt;/span&gt; )]&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now you should be able to run your application.  Watch the Output window to see if any error messages are being generated by the RegAsm or GacUtil utilities, this will help with determining what problems occurred if the application won't build.&lt;br /&gt;&lt;br /&gt;If everything went well you should be staring at a default Explorer window.  You should now see a new option when you add a tool bar containing the name entered for the toolbar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-1873714948321779504?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.codeproject.com/csharp/dotnetbandobjects.asp' title=''/><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/1873714948321779504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=1873714948321779504' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/1873714948321779504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/1873714948321779504'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/fun-with-com-interop.html' title=''/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-5873368575377004013</id><published>2007-04-21T15:19:00.000-05:00</published><updated>2007-04-26T13:23:46.964-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='entertainment'/><title type='text'></title><content type='html'>&lt;a href="http://sjl.funnyordie.com/v1/view_video.php?viewkey=3efbc24c7d2583be6925" target="_blank"&gt;The Landlord&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This had to take an eternity to film.  That or she is a born natural.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-5873368575377004013?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://sjl.funnyordie.com/v1/view_video.php?viewkey=3efbc24c7d2583be6925' title=''/><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/5873368575377004013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=5873368575377004013' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/5873368575377004013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/5873368575377004013'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/landlord.html' title=''/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-1239247340699222385</id><published>2007-04-20T23:33:00.000-05:00</published><updated>2007-04-21T00:24:41.564-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='vs.net'/><title type='text'></title><content type='html'>Recommended Tool: &lt;a href="http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/" target="_blank"&gt;CopySourceAsHtml&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now that I am working on trying to put some usable information on this blog I need an easy way to transfer the code from the rich-text world of my ide to the html world of the browser.  I remembered seeing a tool a while back for doing just that and thinking, "that's neat" only to return to whatever overwhelming concerns I had at the time.  You never know when something you stumble over something, today it's a pointless novelty, tomorrow its a life-saver.&lt;br /&gt;&lt;br /&gt;CopySourceAsHtml is sooooo easy.  Simply select the text you wish to copy, as you've done a hundred-million times before, but this time you will select "Copy As HTML...".  A dialog will display, take a moment to check out some of the options.  Then just click  'OK' and the tool will perform some programming magic.  POOF!  When you paste your code will now be browser friendly html instead of plain old text.&lt;br /&gt;&lt;br /&gt;It does a nice job of picking up the default settings of your ide and translating them to their HTML equivalent.  If you want to be real slick, you can easily override many of your default settings in the options dialog.  Experiment. &lt;br /&gt;&lt;br /&gt;&lt;!--&lt;br /&gt;{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red0\green0\blue0;\red255\green255\blue255;\red0\green0\blue150;\red0\green0\blue255;\red92\green155\blue155;\red245\green250\blue250;\red79\green79\blue79;}??\fs16         \cf3 {\b private}\cf0  \cf3 {\b const}\cf0  \cf3 {\b string}\cf0  SimpleMessage \cf3 {\b =}\cf0  \cf4 "Frog's Brain"\cf0 ;\par ??\par ??        \cf5\cb6\highlight6 ///\cf0  \cf5 &amp;lt;summary&amp;gt;\par ??\cf0\cb0\highlight0         \cf5\cb6\highlight6 ///\cf0  Write the simple message to the Console.\par ??\cb0\highlight0         \cf5\cb6\highlight6 ///\cf0  \cf5 &amp;lt;/summary&amp;gt;\par ??\cf0\cb0\highlight0         \cf3 {\b public}\cf0  \cf3 {\b static}\cf0  \cf3 {\b void}\cf0  Simple()\par ??        \{\par ??            \cf7 {\b Console}\cf3 {\b .}\cf0 Out\cf3 {\b .}\cf0 WriteLine( SimpleMessage );\par ??        \}\par ??}&lt;br /&gt;--&gt;&lt;br /&gt;&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white; border: solid 1px black; padding: 10px 10px 10px 10px; overflow: auto; white-space: nowrap;"&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;const&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;string&lt;/span&gt; SimpleMessage &lt;span style="color: #000096; font-weight: bold;"&gt;=&lt;/span&gt; &lt;span style="color: blue;"&gt;"Frog's Brain"&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; Write the simple message to the Console.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;///&lt;/span&gt;&lt;span style="background: #f5fafa;"&gt; &lt;/span&gt;&lt;span style="color: #5c9b9b; background: #f5fafa;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;static&lt;/span&gt; &lt;span style="color: #000096; font-weight: bold;"&gt;void&lt;/span&gt; Simple()&lt;/p&gt;&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #4f4f4f; font-weight: bold;"&gt;Console&lt;/span&gt;&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;Out&lt;span style="color: #000096; font-weight: bold;"&gt;.&lt;/span&gt;WriteLine( SimpleMessage );&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Here're the changes I've made to make my code easier to read (and copy) in the browser.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Disabled "number lines" option.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Changed tab size from 4 to 8.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Changed font from Consolas to Courier New.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Increased font size from 8 to 10.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Enable "strip line breaks" option.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Enable "remove indentation" option.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Added CSS rules to "File Style" tab.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;border: solid 1px black; padding: 10px 10px 10px 10px; overflow: auto; white-space: nowrap;&lt;/em&gt;.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-1239247340699222385?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/' title=''/><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/1239247340699222385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=1239247340699222385' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/1239247340699222385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/1239247340699222385'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/new-tool-copysourceashtml-now-that-i-am.html' title=''/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-6838732208777401507</id><published>2007-04-20T14:03:00.000-05:00</published><updated>2007-04-20T14:15:19.961-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='entertainment'/><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><title type='text'></title><content type='html'>WoW Summer Hiatus&lt;br /&gt;&lt;br /&gt;I don't know if &lt;a href="http://www.worldofwarcraft.com" target="_blank"&gt;World of Warcraft&lt;/a&gt; is actually addictive.  I do know that it is too easy to spend egregious amounts of time playing it.  Actually it's less 'playing' than satisfying an overwhelming urge to get to the next level or get the next item.  It's like a virtual version of &lt;a href="http://en.wikipedia.org/wiki/Keeping_up_with_the_Joneses" target="_blank"&gt;Keeping up with the Joneses&lt;/a&gt;.  Oooo, that sword gives me an additional +5 to spell damage, too bad it's only for level 24 characters and I'm only level 22, only 12 hours of grinding to go!&lt;br /&gt;&lt;br /&gt;Here's the fruits of my addiction, they are going to gather some dust for the summer though.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://armory.worldofwarcraft.com/character-sheet.xml?r=Silvermoon&amp;n=Pocio" target="_blank"&gt;Pocio&lt;/a&gt;&lt;br /&gt;&lt;a href="http://armory.worldofwarcraft.com/character-sheet.xml?r=Silvermoon&amp;n=Zagloba" target="_blank"&gt;Zagloba&lt;/a&gt;&lt;br /&gt;&lt;a href="http://armory.worldofwarcraft.com/character-sheet.xml?r=Silvermoon&amp;n=Dajbuzi" target="_blank"&gt;Dajbuzi&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'm kind of neurotic for creating new characters in the game, but these are the highest level characters I was still using.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-6838732208777401507?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/6838732208777401507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=6838732208777401507' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/6838732208777401507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/6838732208777401507'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/wow-summer-hiatus-i-dont-know-if-world.html' title=''/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-7238623133352589480</id><published>2007-04-19T22:36:00.000-05:00</published><updated>2007-04-20T13:41:09.487-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='entertainment'/><category scheme='http://www.blogger.com/atom/ns#' term='television'/><title type='text'></title><content type='html'>Being stupid has never been so funny.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nbc.com/My_Name_Is_Earl/about.shtml" target="_blank"&gt;My Name Is Earl&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's nice to see a &lt;a href="http://en.wikipedia.org/wiki/Jason_Lee_%28actor%29" target="_blank"&gt;skateboarder gone good&lt;/a&gt;.  I cannot describe how much I loathe the Jackass guys.  "My Name Is Earl" is so well shot and written that almost no other show currently broadcast can compare.  Only Battlestar Galactica, Lost, and Heroes are equals in quality.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-7238623133352589480?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/7238623133352589480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=7238623133352589480' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/7238623133352589480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/7238623133352589480'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/being-stupid-has-never-been-so-funny.html' title=''/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-7060028655100313701</id><published>2007-04-19T20:05:00.000-05:00</published><updated>2007-04-20T13:46:34.407-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='entertainment'/><category scheme='http://www.blogger.com/atom/ns#' term='home improvement'/><title type='text'></title><content type='html'>Look what we can do on only a $2000.00&lt;b&gt;*&lt;/b&gt; budget!&lt;br /&gt;&lt;br /&gt;*Not including the cost of a real-estate appraisal, a dedicated team consisting of one professional home designer, and two or three professional contractors/carpenters for about two to three weeks.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.hgtv.com/hgtv/shows_hdts" target="_blank"&gt;Designed to Sell&lt;/a&gt; is my wife's newest obsession.&lt;br /&gt;&lt;br /&gt;I wonder how far that two-grand would go if they had to include the labor in that budget?  Two days, TOPS!&lt;br /&gt;&lt;br /&gt;Granted, they seem to do good work, and if the follow-up information is accurate they do help people make money above their original asking price.  That and the host seems like a decent chap and the crew is more personable than most of the home improvement shows.&lt;br /&gt;&lt;br /&gt;I just make sure to remind my wife exactly what the two-thousand dollar budget &lt;i&gt;isn't&lt;/i&gt; counting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-7060028655100313701?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/7060028655100313701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=7060028655100313701' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/7060028655100313701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/7060028655100313701'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/look-what-we-can-do-on-only-2000.html' title=''/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-2235362890974415966</id><published>2007-04-19T15:30:00.000-05:00</published><updated>2007-04-19T15:58:00.034-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='culture'/><category scheme='http://www.blogger.com/atom/ns#' term='entertainment'/><title type='text'></title><content type='html'>Whenever you think you have the toughest, nastiest and unpleasant job ever then you may need to watch a show that my wife and I have been enjoying for a while now that I think will put those thoughts to rest permanently.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://dsc.discovery.com/fansites/dirtyjobs/dirtyjobs.html" target="_blank"&gt;Dirty Jobs&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The show is about the backbreaking, nasty, gross, yucky and usually very interesting jobs that are performed to keep our civilization running smoothly. The host, Mike Rowe, is no fainting flower journalist who only observes from afar. Mike gets in and sticks his hands into some of the most unpleasant places and substances.&lt;br /&gt;&lt;br /&gt;Each episode usually consists of Mike traveling to various locations around the country to showcase 2-3 different industries. He's been to cattle breeders (the hands in unpleasant places) to sewage treatment plants (the unpleasant substances) to alligator farms. And he seems to do his best to try to do the work of whatever occupation is being spotlighted, usually with humorous and sometimes successful results.&lt;br /&gt;&lt;br /&gt;What makes the show good and makes my wife and I fans, is not just the topics and locations. It's how Mike treats the people that are being showcased. He really seems down-to-earth and doesn't condescend or look down his nose, nor does he kiss their butts either. He gives as good as he gets and sometimes the banter with the hosts is the most entertaining part.&lt;br /&gt;&lt;br /&gt;Chances are there are jobs being done in America that you have no idea about. Watch Dirty Jobs on the Discovery Channel and find out what happens after you flush.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-2235362890974415966?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/2235362890974415966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=2235362890974415966' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2235362890974415966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2235362890974415966'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/whenever-you-think-you-have-toughest.html' title=''/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-8147310732025291644</id><published>2007-04-19T14:33:00.000-05:00</published><updated>2007-04-23T22:55:05.753-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='culture'/><category scheme='http://www.blogger.com/atom/ns#' term='entertainment'/><title type='text'></title><content type='html'>Okay, a film, albeit highly-stylized, about an actual historical event is "moronic", a "sword'n'sandals" "dumb audience-friendly" romp.&lt;br /&gt;&lt;br /&gt;Yet, a gimmick laden movie about strippers, zombies and psychotic stuntmen is to be considered high-art.&lt;br /&gt;&lt;br /&gt;Hmm.&lt;br /&gt;&lt;br /&gt;Let's compare the cultural contributions of &lt;a href="http://en.wikipedia.org/wiki/Herodotus" target="_blank"&gt;Herodotus&lt;/a&gt; (&lt;a href="http://en.wikipedia.org/wiki/The_Histories_of_Herodotus" target="_blank"&gt;Histories&lt;/a&gt;) and &lt;a href="http://en.wikipedia.org/wiki/Frank_Miller_%28comics%29" target="_blank"&gt;Frank Miller&lt;/a&gt; (The Dark Knight Returns, Sin City, 300, etc.).&lt;br /&gt;&lt;br /&gt;To &lt;a href="http://en.wikipedia.org/wiki/Quentin_Tarantino" target="_blank"&gt;Quentin Tarantino&lt;/a&gt; (Pulp Fiction, Kill Bill, Grindhouse, etc.) and &lt;a href="http://en.wikipedia.org/wiki/Robert_Rodriguez" target="_blank"&gt;Robert Rodriguez&lt;/a&gt; (Desperado, From Dusk Till Dawn, etc.).&lt;br /&gt;&lt;br /&gt;Hmm.  Unless I think that the height of cultural contributions is clever, hipster, 70's references and cheesy faux-exploitation rip-offs then I think I'm going to just stick with being a fan of the "moronic" and "dumb".&lt;br /&gt;&lt;br /&gt;Just because the director is a pretentious, eccentric weirdo does not make the film fine-art.&lt;br /&gt;&lt;br /&gt;I wonder how much history information has been sought out due to the over-whelming intellectual stimulation of Grindhouse?  I guess I missed the History Channel &lt;a href="http://boards.historychannel.com/thread.jspa?threadID=800019707&amp;messageID=700171198" target="_blank"&gt;special&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-8147310732025291644?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://entertainment.timesonline.co.uk/tol/arts_and_entertainment/film/article1672383.ece' title=''/><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/8147310732025291644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=8147310732025291644' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/8147310732025291644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/8147310732025291644'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/okay-so-film-albeit-highly-stylized.html' title=''/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-2018959341881158668</id><published>2007-04-11T18:56:00.000-05:00</published><updated>2007-04-11T19:04:12.432-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SchemaInSight'/><title type='text'></title><content type='html'>SchemaInSight&lt;br /&gt;&lt;br /&gt;Most code generation code is intended for generating data-access code.  There doesn't seem to be any simple (or free) code for accessing a database and enumerating the database objects.&lt;br /&gt;&lt;br /&gt;The database objects that can be accessed using the SchemaInSight tool include:&lt;br /&gt;&lt;br /&gt;The database's themselves.&lt;br /&gt;The database tables and views.&lt;br /&gt;Stored procedure parameters, and results.  At least for simple stored procedures.&lt;br /&gt;&lt;br /&gt;In the future I would like to extend it to include functions, custom types and anything else I can't think of right now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-2018959341881158668?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/2018959341881158668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=2018959341881158668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2018959341881158668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/2018959341881158668'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/schemainsight-most-code-generation-code.html' title=''/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-8783749911752936271</id><published>2007-04-06T12:07:00.000-05:00</published><updated>2007-04-11T18:56:20.141-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NStun'/><title type='text'></title><content type='html'>So many specs, which one to choose?&lt;br /&gt;&lt;br /&gt;I choose you, &lt;a href="http://tools.ietf.org/id/draft-ietf-behave-rfc3489bis-05.txt"&gt;draft-ietf-behave-rfc3489bis-05&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;The updated draft removes the attempt to discover the type and binding lifetime of the NAT device.  This is a good thing as I noticed problems when testing other implementations of STUN clients where the results would be inconsistent or just incorrect, sometimes changing between STUN requests.  I originally chalked the variations up to a flakey implementation but it seems the VSP (very-smart-people) working on the RFC noticed the same problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-8783749911752936271?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/8783749911752936271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=8783749911752936271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/8783749911752936271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/8783749911752936271'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2007/04/so-many-specs-which-one-to-choose-i.html' title=''/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-116287497306792382</id><published>2006-11-06T22:44:00.000-06:00</published><updated>2007-04-11T18:56:20.141-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NStun'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;"&gt;NAT&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Network Address Translation&lt;br /&gt;&lt;br /&gt;Nasty little critters.  Get on my nerves.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Network_address_translation" target="_blank"&gt;NAT in Wikipedia&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-116287497306792382?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/116287497306792382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=116287497306792382' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/116287497306792382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/116287497306792382'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2006/11/nat-network-address-translation-nasty.html' title=''/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37270754.post-116287451413001886</id><published>2006-11-06T22:38:00.000-06:00</published><updated>2007-04-11T18:56:20.142-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NStun'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;"&gt;NStun&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;STUN, Simple Traversal Underneath Network Address Translators.&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-weight: bold;"&gt;N&lt;/span&gt; is for .NET. :-)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/STUN" target="_blank"&gt;STUN in Wikipedia&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37270754-116287451413001886?l=frogsbrain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frogsbrain.blogspot.com/feeds/116287451413001886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=37270754&amp;postID=116287451413001886' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/116287451413001886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37270754/posts/default/116287451413001886'/><link rel='alternate' type='text/html' href='http://frogsbrain.blogspot.com/2006/11/nstun-stun-simple-traversal-of-user.html' title=''/><author><name>MDH</name><uri>http://www.blogger.com/profile/07175482246692481933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
