<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.2" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>The Art of Ware</title>
	<link>http://www.theartofware.com</link>
	<description>Software design, management, and strategy.</description>
	<pubDate>Wed, 27 Dec 2006 19:38:57 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.2</generator>
	<language>en</language>
			<item>
		<title>obscuretags.com - The Home of Obscure HTML Tags</title>
		<link>http://www.theartofware.com/2006/12/26/obscuretags-home-obscure-html-tags/</link>
		<comments>http://www.theartofware.com/2006/12/26/obscuretags-home-obscure-html-tags/#comments</comments>
		<pubDate>Tue, 26 Dec 2006 15:41:06 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
		
	<category>Reference</category>
		<guid isPermaLink="false">http://www.theartofware.com/2006/12/26/obscuretags-home-obscure-html-tags/</guid>
		<description><![CDATA[<style>.newl {display:none}</style><div class=newl></div>Old tags never die. They just go to Hell and regroup.
This page contains absolutely no CSS because CSS is dumb. 
Such is the motto of obscuretags.com, the home to all HTML tags that are little known, unclear, and almost always confusing. obscuretags maintains a list of odd HTML tags with examples for each tag. The [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Old tags never die. They just go to Hell and regroup.<br />
This page contains absolutely no CSS because CSS is dumb. </p></blockquote>
<p>Such is the motto of obscuretags.com, the home to all HTML tags that are little known, unclear, and almost always confusing. obscuretags maintains a list of odd HTML tags with examples for each tag. The tags include some old favorites and some new, obscure tags. A small portion of the list includes:</p>
<ul>
<li>spacer</li>
<li>button</li>
<li>keygen</li>
<li>address</li>
<li>dl, dt, dd - (Hey, I actually use these!)</li>
<li>bdo - (<bdo dir="rtl">The bdo tage is used to reverse text direction. Bizarre.</bdo>)</li>
</ul>
<p>Check out <a href="http://obscuretags.com/">obscuretags.com</a> for more tags and even more ways to keep your fellow programmers scratching their heads.</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.theartofware.com/2006/12/26/obscuretags-home-obscure-html-tags/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>New Release of Opera Mini has Focus on Social Networking</title>
		<link>http://www.theartofware.com/2006/11/30/opera-software-mini-browser-social-networking/</link>
		<comments>http://www.theartofware.com/2006/11/30/opera-software-mini-browser-social-networking/#comments</comments>
		<pubDate>Fri, 01 Dec 2006 02:14:56 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
		
	<category>Mobile</category>
		<guid isPermaLink="false">http://www.theartofware.com/2006/11/30/opera-software-mini-browser-social-networking/</guid>
		<description><![CDATA[Opera Software has released version 3.0 of the Opera Mini mobile browser. The new version introduces new features that enhance mobile social networking such as photo sharing, an RSS feed reader, secure connections, content folding, and faster surfing.
Opera Mini can now be used to browse and upload pictures to social networking sites including: MySpace, Blogger, [...]]]></description>
			<content:encoded><![CDATA[<p><img id="image68" src="http://www.theartofware.com/uploads/opera-mini-rss.jpg" alt="Opera Mini RSS" /><strong>Opera Software</strong> has released version 3.0 of the <strong>Opera Mini</strong> mobile browser. The new version introduces new features that enhance mobile social networking such as photo sharing, an RSS feed reader, secure connections, content folding, and faster surfing.</p>
<p>Opera Mini can now be used to browse and upload pictures to social networking sites including: MySpace, Blogger, Flickr, Facebook and My Opera. In addition, the new version allows consumers to securely access webmail such as Hotmail, Gmail and Yahoo Mail. Content folding improves the browsing experience by reducing the amount of scrolling before users reach the main content of a site. </p>
<p>Opera enjoys upwards of eight million users worldwide with more than 2 billion Web pages viewed. Opera Mini is available free of charge and enables Web browsing on almost any mobile phone.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.theartofware.com/2006/11/30/opera-software-mini-browser-social-networking/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Entrepreneurial Hacker Decodes iPod</title>
		<link>http://www.theartofware.com/2006/10/26/hacker-decodes-apple-ipod-code/</link>
		<comments>http://www.theartofware.com/2006/10/26/hacker-decodes-apple-ipod-code/#comments</comments>
		<pubDate>Fri, 27 Oct 2006 02:01:03 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
		
	<category>Apple</category>
		<guid isPermaLink="false">http://www.theartofware.com/2006/10/26/hacker-decodes-apple-ipod-code/</guid>
		<description><![CDATA[It seems a 22-year-old hacker known as &#8220;DVD Jon&#8221; has cracked the code that Apple uses to associate iTunes files exclusively to iPod players.
DVD Jon has been posting license-circumventing codes on the Internet for several years but now the enterprising young hacker appears to have caught the entrepreneurial spirit.
DVD Jon, aka Jon Johansen, runs a [...]]]></description>
			<content:encoded><![CDATA[<p><img align="left" alt="iTunes" id="image64" title="iTunes" src="http://www.theartofware.com/uploads/iTunes.jpg" />It seems a 22-year-old hacker known as &#8220;DVD Jon&#8221; has cracked the code that Apple uses to associate iTunes files exclusively to iPod players.</p>
<p>DVD Jon has been posting license-circumventing codes on the Internet for several years but now the enterprising young hacker appears to have caught the entrepreneurial spirit.</p>
<p>DVD Jon, aka Jon Johansen, runs a small software shop in San Francisco called DoubleTwist Ventures. Johansen said yesterday his program would fool computers into thinking that any MP3 player was an iPod or that any piece of music or video downloaded from the internet was purchased from iTunes.</p>
<p>Johansen intends to license his wares to media distribution companies, thus allowing their songs and videos to by-pass the iTunes online store, but still be played on an iPod.</p>
<p>Even if Johansen doesn&#8217;t get dragged into court by Apple, I’m guessing a simple patch to iTunes would allow Apple to stop the problem.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.theartofware.com/2006/10/26/hacker-decodes-apple-ipod-code/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Google Launches Code Search</title>
		<link>http://www.theartofware.com/2006/10/05/google-launches-code-search/</link>
		<comments>http://www.theartofware.com/2006/10/05/google-launches-code-search/#comments</comments>
		<pubDate>Thu, 05 Oct 2006 12:24:40 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
		
	<category>Utility</category>
	<category>Google</category>
		<guid isPermaLink="false">http://www.theartofware.com/2006/10/05/google-launches-code-search/</guid>
		<description><![CDATA[Google just announced a new search service designed to simplify how software developers search for source code. The service began internally within Google as a way for Google programmers to search through internal company code.
It&#8217;s no secret that most software developers spend a good portion of their day on Google or Google groups looking for [...]]]></description>
			<content:encoded><![CDATA[<p><img align="left" title="Google Code Search" id="image62" alt="Google Code Search" src="http://www.theartofware.com/uploads/google_codesearch.gif" />Google just announced a new search service designed to simplify how software developers search for source code. The service began internally within Google as a way for Google programmers to search through internal company code.</p>
<p>It&#8217;s no secret that most software developers spend a good portion of their day on Google or Google groups looking for a code block or some other information to get them through a sticky situation. I personally have logged more hours on Google Groups in the last 7 years that I care to think about.</p>
<p>The search works as you would expect, except that it searches code repositories such as Subversion or CVS instead of web pages. The advanced search allows you to use regular expressions, filter results by programming language or license type.</p>
<p>Either way, this has to be an improvement over the MSDN library.</p>
<p><a title="Google Code Search" href="http://www.google.com/codesearch">Google Code Search</a> [Google]
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.theartofware.com/2006/10/05/google-launches-code-search/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Google Spreadsheet Announces New Features</title>
		<link>http://www.theartofware.com/2006/09/25/google-spreadsheet-announces-new-features/</link>
		<comments>http://www.theartofware.com/2006/09/25/google-spreadsheet-announces-new-features/#comments</comments>
		<pubDate>Tue, 26 Sep 2006 00:52:21 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
		
	<category>Webware</category>
	<category>Google</category>
		<guid isPermaLink="false">http://www.theartofware.com/2006/09/25/google-spreadsheet-announces-new-features/</guid>
		<description><![CDATA[Google has announced some new features that have been added its Google Spreadsheet application. The new features are designed to make collaboration and printing easier. Some of the key changes include:

Anyone can View option – You can have anyone view your spreadsheet without having to invite them specifically.
Access to your Google Contact List (used in [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal"><img align="left" title="Google Spreadsheets" id="image58" alt="Google Spreadsheets" src="http://www.theartofware.com/uploads/Google_Spreadsheets.gif" />Google has <a title="Google Spreadsheet Features" href="http://www.google.com/support/spreadsheets/bin/answer.py?answer=47136">announced some new features</a> that have been added its Google Spreadsheet application. The new features are designed to make collaboration and printing easier. Some of the key changes include:</p>
<ul>
<li>Anyone can View option – You can have anyone view your spreadsheet without having to invite them specifically.</li>
<li>Access to your Google Contact List (used in GMail, Calendar, etc.)</li>
<li>Increase in allowed simultaneous sessions in one spreadsheet - Up to 50 people at any one time may now edit or view any single spreadsheet.</li>
<li>Printing - The File menu now contains a ‘Print’ option, which opens the HTML view and the browser&#8217;s print dialog.</li>
<li>Export to PDF - Create a .pdf file which you can print and save from the acrobat reader.</li>
<li>Open Document Format support (ODF)</li>
<li>Mutli-line Text in Cells, Merge multiple groups of cells at one time,</li>
<li>Larger file sizes imported</li>
<li>Un-saved spreadsheet warning</li>
</ul>
<p><a title="Google Spreadsheets" href="http://spreadsheets.google.com/">Google Spreadsheets</a> (Requires Google Account)
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.theartofware.com/2006/09/25/google-spreadsheet-announces-new-features/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Why it&#8217;s easy to pooh-pooh new ideas</title>
		<link>http://www.theartofware.com/2006/09/14/why-its-easy-to-pooh-pooh-new-ideas/</link>
		<comments>http://www.theartofware.com/2006/09/14/why-its-easy-to-pooh-pooh-new-ideas/#comments</comments>
		<pubDate>Thu, 14 Sep 2006 18:59:22 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
		
	<category>Philosophy</category>
		<guid isPermaLink="false">http://www.theartofware.com/2006/09/14/why-its-easy-to-pooh-pooh-new-ideas/</guid>
		<description><![CDATA[It&#8217;s easy to give criticism. It’s hard coming up with new and interesting ideas and even harder trying to make them a reality.
I find it easiest to take criticism from those people who also generate their own original thoughts and initiatives. Feedback from people who have also taken a chance on something new means so [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s easy to give criticism. It’s hard coming up with new and interesting ideas and even harder trying to make them a reality.</p>
<p>I find it easiest to take criticism from those people who also generate their own original thoughts and initiatives. Feedback from people who have also taken a chance on something new means so much more to me. It doesn’t take anything to scoff at a new idea. It takes a lot of backbone to put yourself on the line with a new thought, plan, or proposal.</p>
<p>Just remember, anybody can be a critic. Not everyone has the fortitude to develop an original idea or the moxie to make it a reality.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.theartofware.com/2006/09/14/why-its-easy-to-pooh-pooh-new-ideas/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Hierarchies with Nested Repeaters in ASP.NET</title>
		<link>http://www.theartofware.com/2006/07/06/hierarchies-with-nested-repeaters-in-net/</link>
		<comments>http://www.theartofware.com/2006/07/06/hierarchies-with-nested-repeaters-in-net/#comments</comments>
		<pubDate>Fri, 07 Jul 2006 01:07:36 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
		
	<category>ASP.NET</category>
	<category>Engineering</category>
		<guid isPermaLink="false">http://www.theartofware.com/2006/07/06/hierarchies-with-nested-repeaters-in-net/</guid>
		<description><![CDATA[In most every project I have ever worked on there is some type of hierarchy to the data and ultimately I need to represent this data in some hierarchical fashion to the user. Nested repeaters work very well in these situations and are quite easy to implement.
I am a big proponent of the repeater control [...]]]></description>
			<content:encoded><![CDATA[<p>In most every project I have ever worked on there is some type of hierarchy to the data and ultimately I need to represent this data in some hierarchical fashion to the user. Nested repeaters work very well in these situations and are quite easy to implement.</p>
<p>I am a big proponent of the repeater control and use it almost exclusively for representing repeating data structures. I find that the GridView control is overly-complicated and too tightly integrated with the aspx page for my tastes. I do use the DataList on occasion when I need to represent horizontal-repeating data.</p>
<p>For purposes of a demonstration let us say that we need to create a report that represents an order for products from a hypothetical customer. An order has a hierarchy consisting of an Order object which contains one or many OrderItems. Here is the Repeater section of our report:</p>
<div class="codeBlock">&lt;asp:Repeater ID=&#8221;<strong>Order</strong>&#8221; runat=&#8221;server&#8221;<br />
OnItemDataBound=&#8221;Order_ItemDataBound&#8221;&gt;<br />
&lt;ItemTemplate&gt;<br />
&lt;%# DataBinder.Eval(Container.DataItem, &#8220;OrderID&#8221;) %&gt;&lt;br /&gt;<br />
&lt;asp:Repeater ID=&#8221;<strong>OrderItems</strong>&#8221; runat=&#8221;server&#8221;&gt;<br />
&lt;ItemTemplate&gt;<br />
&lt;%# DataBinder.Eval(Container.DataItem, &#8220;ItemID&#8221;) %&gt;&lt;br /&gt;<br />
&lt;/ItemTemplate&gt;<br />
&lt;/asp:Repeater&gt;<br />
&lt;/ItemTemplate&gt;<br />
&lt;/asp:Repeater&gt;</div>
<p>This overly-simplified example report contains 2 repeaters: Order and OrderItems. We can just place the nested repeater (OrderItems) right in the ItemTemplate section of our parent repeater (Order).</p>
<p>On the Page Load event we bind the Order repeater as we normally would.</p>
<div class="codeBlock">protected void Page_Load(object sender, EventArgs e)<br />
{<br />
Order.DataSource = GetOrder(Request.QueryString[&#8221;OrderID&#8221;].ToString);<br />
Order.DataBind();<br />
}</div>
<p>The nested repeater is bound on the ItemDataBound event of the Order repeater and we need to create a handler for the ItemDataBound event on the Order repeater as follows:</p>
<div class="codeBlock">protected void Order_ItemDataBound(object sender, RepeaterItemEventArgs e)<br />
{<br />
RepeaterItem item = e.Item;<br />
if ((item.ItemType == ListItemType.Item) ||<br />
(item.ItemType == ListItemType.AlternatingItem))<br />
{<br />
Repeater rptr2 = (Repeater)item.FindControl(&#8221;OrderItems&#8221;);<br />
//Get the ID for the current row.<br />
DataRowView row = (DataRowView)e.Item.DataItem;<br />
string orderID = row[&#8221;OrderID&#8221;].ToString();<br />
//Get the nested data for this item.<br />
DataSet dsOrderDetails = GetOrderDetails(orderID);<br />
rptr2.DataSource = dsOrderDetails;<br />
rptr2.DataBind();<br />
}<br />
}</div>
<p>Be careful with large sets of data as this can become very chatty due to the need to call the database on each ItemDataBound event. In a situation like this example I would build a custom Order class to represent my objects using a <a title="Generic List" href="http://www.theartofware.com/2006/06/12/list-management-with-generic-list-in-net/">Generic List</a> instead of fussing with clumsy DataReaders or DataSets.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.theartofware.com/2006/07/06/hierarchies-with-nested-repeaters-in-net/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Planning an Exit Strategy</title>
		<link>http://www.theartofware.com/2006/07/01/planning-an-exit-strategy/</link>
		<comments>http://www.theartofware.com/2006/07/01/planning-an-exit-strategy/#comments</comments>
		<pubDate>Sat, 01 Jul 2006 17:37:00 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
		
	<category>Career</category>
	<category>Strategy</category>
		<guid isPermaLink="false">http://www.theartofware.com/2006/07/01/planning-an-exit-strategy/</guid>
		<description><![CDATA[There comes a time in your career where you must move on in order to move ahead. Perhaps you aren&#8217;t challenged anymore, maybe you are looking for a career change, or maybe you can&#8217;t stand the smell of last nights warmed-up leftovers wafting over the cube wall from the new guy sitting next to you. [...]]]></description>
			<content:encoded><![CDATA[<p>There comes a time in your career where you must move on in order to move ahead. Perhaps you aren&#8217;t challenged anymore, maybe you are looking for a career change, or maybe you can&#8217;t stand the smell of last nights warmed-up leftovers wafting over the cube wall from the new guy sitting next to you. Whatever the case may be, it is best to exit on good terms and with a good strategy. Here are some tips for planning a successful exit strategy:</p>
<ul>
<li>Discuss your plans with your manager months ahead of your planned departure. Hopefully you have a good enough relationship with your manager to discuss this openly.</li>
<li>Groom your successor. Find an existing candidate or hire someone who can be your replacement and train them accordingly.</li>
<li>Wrap-up any unfinished projects. You never want to leave with a bevy of important project 50% complete. Train another person to take these projects.</li>
<li>Disassociate yourself from your day-to-day tasks. If there are any tasks or processes that you own you should train another person to do these tasks or automate them (this is good advice even if you aren&#8217;t leaving).</li>
<li>Don&#8217;t leave the team understaffed if possible.</li>
<li>Keep your mouth shut. This isn&#8217;t a time to air all of your grievances.</li>
<li>Don&#8217;t fall victim of &#8220;short timers&#8221; attitude. Keep being productive and positive until you are out the door.</li>
<li>And please, don&#8217;t drink too much at your going-away party. Just avoid having one if at all possible.</li>
</ul>
<p>Even if your current situation is a quagmire of epic proportions do not <a target="_blank" title="paint the town red" href="http://www.phrases.org.uk/meanings/paint-the-town-red.html">paint the town red</a> when you leave. It is important to leave professionally and on good terms because you never know when you will come across an ex-coworker or maybe that sweet new gig with the plush window-office you were promised wasn&#8217;t so sweet after all.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.theartofware.com/2006/07/01/planning-an-exit-strategy/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>CTRL-F Website Navigation</title>
		<link>http://www.theartofware.com/2006/06/24/ctrl-f-website-navigation/</link>
		<comments>http://www.theartofware.com/2006/06/24/ctrl-f-website-navigation/#comments</comments>
		<pubDate>Sat, 24 Jun 2006 13:38:36 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
		
	<category>Design</category>
		<guid isPermaLink="false">http://www.theartofware.com/2006/06/24/ctrl-f-website-navigation/</guid>
		<description><![CDATA[On many occasions when I visit a website I know exactly what I am after; I just don&#8217;t know where it is on the page. In these situations I usually resort to using CTRL-F to search the text on the webpage for the keywords I am after. This usually occurs when a website becomes so [...]]]></description>
			<content:encoded><![CDATA[<p>On many occasions when I visit a website I know exactly what I am after; I just don&#8217;t know where it is on the page. In these situations I usually resort to using CTRL-F to search the text on the webpage for the keywords I am after. This usually occurs when a website becomes so large and the density of hyperlinks becomes so great  it is almost impossible to organize everything. Let me define it:</p>
<p><strong>CTRL-F Navigation</strong> - CTRL-F Navigation is the primary navigation mechanism for websites that become too convoluted as to be navigated by the built-in website menu. CTRL-F is a feature in all web browsers that allows the user to search the text on a webpage for certain keywords. CTRL-F Navigation is typically used to find a hyperlink containing the keyword you are after. For example you may use CTRL-F to find common navigational items such as: Search, Login, Logout, or Signup. CTRL-F only works if the link you are after is text-based and not an image or a button.</p>
<p>Lets take a look at the top 5 sites on Alexa and determine the need for CTRL-F Navigation:</p>
<ol>
<li><strong>Yahoo</strong> - Just as I was finally able to efficiently navigate their old design Yahoo redesigns their site. CTRL-F is a must for finding anything on the Yahoo or MyYahoo pages.</li>
<li><strong>MSN</strong> - I don&#8217;t use this page but I have to look at it every time I sign out of my Hotmail account. CTRL-F is probably necessary and would work fine.</li>
<li><strong>Google</strong> - The Google search page is a simple as it can be and there is no need for CTRL-F Navigation. However, if you need to use any of the Google services CTRL-F won&#8217;t help you find them from google.com.</li>
<li><strong>Myspace</strong> - I don&#8217;t use MySpace and I visited it for the first time while writing this post. The navigation was much cleaner than I imagined it would be. CTRL-F isn&#8217;t necessary.</li>
<li><strong>Ebay</strong> - There is probably a reason for the proliferation of third-party Ebay front-ends out there. A lot of people don&#8217;t even use Ebay to search Ebay.</li>
</ol>
<p>My personal favorite and the reason I wrote this post is <strong>Amazon</strong>. I buy a lot of things off of Amazon and CTRL-F is the only way to navigate that jungle.</p>
<p>There is a lot of <a target="_blank" title="poor website navitation" href="http://www.webpagesthatsuck.com/mysterymeatnavigation.html">poor website navigation</a> out there. If you can&#8217;t find what you need on a website perhaps you should reconsider why you are using the website in the first place.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.theartofware.com/2006/06/24/ctrl-f-website-navigation/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Cowboy Code</title>
		<link>http://www.theartofware.com/2006/06/20/cowboy-code/</link>
		<comments>http://www.theartofware.com/2006/06/20/cowboy-code/#comments</comments>
		<pubDate>Wed, 21 Jun 2006 00:58:58 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
		
	<category>Management</category>
		<guid isPermaLink="false">http://www.theartofware.com/2006/06/20/cowboy-code/</guid>
		<description><![CDATA[What is cowboy code? To some it may hearken you back to the days of the noble cowboy and to thoughts of Gene Autry&#8217;s Cowboy Code but to me it means something entirely different. Let me define it:
Cowboy Code - Any unmanaged, undocumented, or otherwise unknown piece of code that runs a business process which [...]]]></description>
			<content:encoded><![CDATA[<p>What is cowboy code? To some it may hearken you back to the days of the noble cowboy and to thoughts of <a title="Gene Autry's Cowboy Code" href="http://www.geneautry.com/geneautry/geneautry_cowboycode.html">Gene Autry&#8217;s Cowboy Code</a> but to me it means something entirely different. Let me define it:</p>
<p><strong>Cowboy Code - </strong>Any unmanaged, undocumented, or otherwise unknown piece of code that runs a business process which provides a modicum of value to the organization. Cowboy Code is normally created in a heat-of-the-moment fashion to solve an unplanned business process or to fix an unexpected emergency and is left to run unmonitored and forgotten until the day it breaks. Cowboy code may also include inappropriate uses of technology or unnecessary uses of technology to &#8220;showboat&#8221; in an attempt to get attention. Cowboy Code does not have any auditing, logging, or reporting mechanisms and the programmer that wrote the code has typically long since left the organization.</p>
<p>In every shop I work I seem to always be on the roundup of this cowboy code. Cowboy code has many guises: batch files, DTS packages, Access databases, Visual Basic scripts, scheduled tasks, SQL Server jobs, and the dreaded compiled code without source are but a few of the many sources of cowboy code.</p>
<p>Perhaps as programmers we need our own code of conduct as did the cowboys of yore. A Code that would dictate proper conduct, reward good behavior, and establish camaraderie among programmers.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.theartofware.com/2006/06/20/cowboy-code/feed/</wfw:commentRSS>
		</item>
	</channel>
</rss>
