<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Adam Caudill's Blog</title>
	
	<link>http://adamcaudill.com</link>
	<description>Adam's view on technology, software development, and world domination.</description>
	<lastBuildDate>Sat, 19 Jun 2010 19:58:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/AdamCaudillsBlog" /><feedburner:info uri="adamcaudillsblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>on Hiring</title>
		<link>http://feedproxy.google.com/~r/AdamCaudillsBlog/~3/octc7W00TxQ/</link>
		<comments>http://adamcaudill.com/2010/06/19/on-hiring/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 19:58:25 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Business of Software]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Hiring]]></category>
		<category><![CDATA[HR]]></category>
		<category><![CDATA[ISV]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Tips and Tricks]]></category>

		<guid isPermaLink="false">http://adamcaudill.com/?p=582</guid>
		<description><![CDATA[The company I work for is hiring several developers which marks my first significant hiring effort since being promoted to management. This had led to a few interesting observations* I would like to share that may benefit both those looking for a new job and those looking for the next star to add to their team. Immigration Law: [...]]]></description>
			<content:encoded><![CDATA[<p>The company I work for is hiring several developers which marks my first significant hiring effort since being promoted to management. This had led to a few interesting observations* I would like to share that may benefit both those looking for a new job and those looking for the next star to add to their team.</p>
<p><strong>Immigration Law:</strong> I had no idea how complex this area of law gets; it&#8217;s a maddening maze of rules and policies that are more effective at confusing those involved than providing a reasonable solution to a problem. If you run into this (and you will), you need somebody that has dealt with this and knows what to do. Getting both parties into legal hot water is far too easy.</p>
<p><strong>Resumes:</strong> I&#8217;ve seen great resumes that made it clear that I needed to hire this person and resumes so cluttered and complex it took an hour just to get through it. Here&#8217;s a few things that stuck out to me:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Don't_repeat_yourself">DRY</a> is good for code, and for a resume. Clean and concise is always better; if you find yourself hitting Ctrl+C even once while working on a resume, you&#8217;re probably doing something wrong.</li>
<li>Length is important, but shorter isn&#8217;t always better. Unlike many other fields where a single page resume is considered optimal, technical resumes need at least a second page. Going too short on a resume is a great way to blend into the crowd; a resume should stand out, and that takes space.</li>
<li>How long is too long? Unless you&#8217;ve been doing this for a <em>very</em> long time, more than three pages is probably excessive. This isn&#8217;t always true, but think it through before using more than two pages.</li>
<li>Use whitespace carefully. Don&#8217;t leave a page half empty or pack everything in so that it looks cluttered. As with any type of design, whitespace is a powerful tool that should be used wisely and never be left to chance.</li>
<li>Use color sparingly. Many corporate printers are black and white only, so if you use color make sure it looks right when printed without it.</li>
<li>Use bold even more sparingly. It&#8217;s sometimes useful to point out items of interest, but it quickly degrades the readability of a resume.</li>
</ul>
<p>Many people seem to have a hard time with this, but a resume is a <em>textual representation of yourself</em>. It represents you as a person and your accomplishments as a professional. Any errors or signs of haste or carelessness say much about you as a person; if you are careless with such a significant representation of yourself what does it say about your attention to detail or work ethic?</p>
<p><strong>Experience:</strong> For a person that has recently graduated, experience in the field is the single largest hindrance both when it comes to securing a position and to receiving a salary they are happy with. The best advice I can find for people in this position is to look to the open source community for help. There are many projects that are desperate for developers and it&#8217;s a great way to get familiar with working in a team, coordinating with people over a distributed area, and releasing code for public consumption. In lieu of paid work experience, open source is a great way to fill in a resume (and it can be quite profitable for some, if you play your cards right).</p>
<p><strong>Salary:</strong> In some companies pay is a minor issue thanks to clearly structured systems such as that <a href="http://www.joelonsoftware.com/articles/fog0000000038.html">proposed</a> by Joel Spolsky; for others is can be a source of pain, envy, and jealousy. This is a topic that I truly hate; it&#8217;s uncomfortable at best and quite painful at worst. While I can&#8217;t offer much advice, here are a few things to think about:</p>
<ul>
<li>Money is not an effective motivator. In an ideal environment it should just stay out-of-the-way and allow developers to live a comfortable life; in reality the role it plays is a bit different. More often than not, it&#8217;s a distraction that gets in the way and outweighs the factors that do motivate people.</li>
<li>Companies follow a few different pay systems, and once set moving to different system is nearly impossible. Here are a few I&#8217;ve seen:
<ul>
<li>Clearly Structured: This system places developers on a scale, and developers at a given level receive the same salary (see <a href="http://fogcreek.com/">Fog Creek</a>).</li>
<li>Structured + Negotiated: This is the most common system I&#8217;ve seen; it mixes a structured level system with negotiated modifications that can apply a certain percentage increase from the normal base salary for that level or other benefits (extended vacation, etc).</li>
<li>Negotiated: Pay is based on negotiation skills and need; this can lead to odd situations such as where a junior developer can make more than a senior developer due to the need to fill a position quickly. This system requires strict secrecy when it comes to salary information to avoid nasty surprises, unlike the clearly structured system where salary information can be openly shared.</li>
</ul>
</li>
<li>Are large salary increases possible? Some companies have no issue with large increases in salary for a promotion (20%+) while in others exceeding 5% for any reason is a major challenge. If a developer is coming in on the low-end of the scale (i.e. due to lack of experience, such as a recent graduate), is there a real possibility of moving up? In my experience, people stay near the end they start at &#8211; those that start at the bottom will stay there until they move to a different company.</li>
</ul>
<p><strong>Interview Questions:</strong> If you are conducing an interview, make a list of questions and write them down. It&#8217;s quite embarrassing to suddenly realize that you are out of questions just a few minutes in (Need inspiration? Try <a href="http://en.wikipedia.org/wiki/Microsoft_interview">this</a> or <a href="http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html">this</a>). Many people have said much about this, but the most important thing I can point out is just don&#8217;t wing it. Plan carefully, make sure you know what you&#8217;re going to do and when before the candidate shows up.</p>
<p><strong>Interview Dress Code:</strong> I&#8217;ve been amazed at what I&#8217;ve seen people wear, everything from high-end suits to jeans. What&#8217;s appropriate? It really depends on the environment; a large corporation will expect an Armani suit where a startup is happier seeing jeans and an American Apparel t-shirt. When in doubt, I would go with a suit personally &#8211; but depending on the company that could cost you the job just as quickly as showing up in jeans.</p>
<p><strong>Interviews Go Both Ways:</strong> An interview shouldn&#8217;t be a one-way affair; the candidate should be interviewing the company as much as you are interviewing them. They should be asking questions about the environment, expectations, tools and resources provided as much as you are asking them about prior experience and knowledge. If a candidate doesn&#8217;t seem to care about the company or what the working conditions are like &#8211; think carefully before hiring them.</p>
<p><strong>Other Thoughts:</strong> I&#8217;ll not go into what I look for when it comes to personality or other personal traits as that would require far more than a blog post to cover. I&#8217;m also going to avoid things such as hobbies and the like; while they can tell you much about a person they can also lead to other complications. Any question in an interview can quickly lead to a land-mine and in the legal quagmire that is HR law and policies, trouble is easy to find. When in doubt, just don&#8217;t ask.</p>
<p>* This is based on my experience over the years; not necessarily the experiences in this round of hiring or the opinions or policies of my employer. In general, nothing in this refers to policies, preferences, or procedures of my employer. &lt;Standard Disclaimer /&gt;</p>

<p><a href="http://feedads.g.doubleclick.net/~a/0oKic_cKus3hjq7fZJdA7w1TwxY/0/da"><img src="http://feedads.g.doubleclick.net/~a/0oKic_cKus3hjq7fZJdA7w1TwxY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/0oKic_cKus3hjq7fZJdA7w1TwxY/1/da"><img src="http://feedads.g.doubleclick.net/~a/0oKic_cKus3hjq7fZJdA7w1TwxY/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/AdamCaudillsBlog/~4/octc7W00TxQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adamcaudill.com/2010/06/19/on-hiring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adamcaudill.com/2010/06/19/on-hiring/</feedburner:origLink></item>
		<item>
		<title>Upgrading Windows 7 Pro VL</title>
		<link>http://feedproxy.google.com/~r/AdamCaudillsBlog/~3/ij5a0OQhrkM/</link>
		<comments>http://adamcaudill.com/2010/06/18/upgrading-windows-7-pro-vl/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 03:42:05 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[MSDN]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://adamcaudill.com/?p=600</guid>
		<description><![CDATA[While performing some testing on a Windows 7 Professional workstation running a VL build from MSDN found that a feature I needed was missing &#8211; the new Multi-Monitor RDP support. After a little research I found that only the Ultimate and Enterprise editions support this feature; which thanks to Windows 7&#8242;s Anytime Upgrade feature I assumed [...]]]></description>
			<content:encoded><![CDATA[<p>While performing some testing on a Windows 7 Professional workstation running a VL build from MSDN found that a feature I needed was missing &#8211; the new <a href="http://blogs.msdn.com/b/rds/archive/2009/07/01/using-multiple-monitors-in-remote-desktop-session.aspx">Multi-Monitor RDP</a> support. After a little <a href="http://windows.microsoft.com/en-us/windows7/Remote-Desktop-Connection-frequently-asked-questions#">research</a> I found that only the Ultimate and Enterprise editions support this feature; which thanks to Windows 7&#8242;s <a href="http://en.wikipedia.org/wiki/Windows_Anytime_Upgrade">Anytime Upgrade</a> feature I assumed this would be no issue.</p>
<p>But, it was an issue.</p>
<p>It turns out that the build of Windows 7 I was using was missing <code>WindowsAnytimeUpgradeUI.exe</code> and the other related files needed to make the Anytime Upgrade work &#8211; and copying the files from another box doesn&#8217;t work. It seems this build simply can&#8217;t be upgraded in this fashion. So I tried a few other tricks, hoping to find something that would work:</p>
<ul>
<li>Reactivate Windows with an Ultimate key; fails with an error indicating that a Professional key is required.</li>
<li>Run Ultimate edition installer from Windows; fails with <a href="http://adamcaudill.com/files/2010-06-18_0332.png" rel="lightbox">this error</a> indicating that you can&#8217;t perform edition upgrades.</li>
</ul>
<p>So being stubborn and determined not to re-install Windows to make this feature work, I started looking for other options. Thanks to a hack for <a href="http://www.gmtaz.com/how-to-upgrade-windows-7-rc-ultimate-to-rtm-enterprise/comment-page-1/">upgrading the RC builds to Final</a>, I found what I needed.</p>
<p>I edited the <code>EditionID</code> and <code>ProductName</code> to reflect Ultimate instead of Professional, rebooted, and then ran the Ultimate installer from within Windows. This time the installer ran without issue and after an hour and a couple reboots it was done. This in-place upgrade/repair procedure allows you to jump to a different edition with fairly little pain. A couple of Windows settings needed to be corrected (primarily display related) and Visual Studio 2010 had to be re-installed, though otherwise everything worked just as it did before.</p>
<p>This is the only method for upgrading these Windows 7 builds that I&#8217;ve found, the only other option is to re-install Windows from scratch.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/P1XQl7NAVDoij-BdbX75tdkZ95s/0/da"><img src="http://feedads.g.doubleclick.net/~a/P1XQl7NAVDoij-BdbX75tdkZ95s/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/P1XQl7NAVDoij-BdbX75tdkZ95s/1/da"><img src="http://feedads.g.doubleclick.net/~a/P1XQl7NAVDoij-BdbX75tdkZ95s/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/AdamCaudillsBlog/~4/ij5a0OQhrkM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adamcaudill.com/2010/06/18/upgrading-windows-7-pro-vl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adamcaudill.com/2010/06/18/upgrading-windows-7-pro-vl/</feedburner:origLink></item>
		<item>
		<title>Android &amp; Windows 7 64bit</title>
		<link>http://feedproxy.google.com/~r/AdamCaudillsBlog/~3/1TQC989ULwA/</link>
		<comments>http://adamcaudill.com/2010/04/19/android-windows-7-64bit/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 05:13:56 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Tips and Tricks]]></category>

		<guid isPermaLink="false">http://adamcaudill.com/?p=572</guid>
		<description><![CDATA[Setting up the Android SDK on Windows 7 64bit, with a 64bit JDK / JRE is a bit less straightforward than one would expect, thankfully though the solution is quite simple. There are two settings that need to be adjusted to make this work &#8211; otherwise you&#8217;ll get an error indicating that Java can&#8217;t be [...]]]></description>
			<content:encoded><![CDATA[<p>Setting up the Android SDK on Windows 7 64bit, with a 64bit JDK / JRE is a bit less straightforward than one would expect, thankfully though the solution is quite simple. There are two settings that need to be adjusted to make this work &#8211; otherwise you&#8217;ll get an error indicating that Java can&#8217;t be found.</p>
<p>Step 1: Modify your <code>PATH</code> to include the <code>bin</code> folder of the JRE. Mine looks like this:</p>
<p style="padding-left: 30px;"><code>C:\Program Files\Java\jre6\bin</code></p>
<p>Step 2: Set the <code>ANDROID_SWT</code> variable (you&#8217;ll probably need to add it) to the <code>\tools\lib\x86_64</code> folder of the Android SDK. Mine looks like this:</p>
<p style="padding-left: 30px;"><code>C:\Android\SDK\tools\lib\x86_64</code></p>
<p>With these two changes, everything seems to work as expected. Why this is required on 64bit but not 32bit I&#8217;m not sure, but this does seem to solve the problem.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/tgqzgufq37mrXiyo-rp2_deJOHE/0/da"><img src="http://feedads.g.doubleclick.net/~a/tgqzgufq37mrXiyo-rp2_deJOHE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/tgqzgufq37mrXiyo-rp2_deJOHE/1/da"><img src="http://feedads.g.doubleclick.net/~a/tgqzgufq37mrXiyo-rp2_deJOHE/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/AdamCaudillsBlog/~4/1TQC989ULwA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adamcaudill.com/2010/04/19/android-windows-7-64bit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adamcaudill.com/2010/04/19/android-windows-7-64bit/</feedburner:origLink></item>
		<item>
		<title>Secure Password Storage</title>
		<link>http://feedproxy.google.com/~r/AdamCaudillsBlog/~3/wbSmYdzLG7Y/</link>
		<comments>http://adamcaudill.com/2010/02/01/secure-password-storage/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 07:08:35 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://adamcaudill.com/?p=556</guid>
		<description><![CDATA[Do you use MD5 or SHA1 to store passwords? Think they are secure? Think again. While generic hashing algorithms are certainly better than storing passwords in plain text, it&#8217;s still not as secure as it should be. Users place great trust in us to ensure that their credentials will be secure and treated with the utmost respect; [...]]]></description>
			<content:encoded><![CDATA[<p>Do you use MD5 or SHA1 to store passwords? Think they are secure? Think again.</p>
<p>While generic hashing algorithms are certainly better than storing passwords in <a title="TechCrunch: One Of The 32 Million With A RockYou Account? You May Want To Change All Your Passwords. Like Now." href="http://www.techcrunch.com/2009/12/14/rockyou-hacked/">plain text</a>, it&#8217;s still not as secure as it should be. Users place great trust in us to ensure that their credentials will be secure and treated with the utmost respect; it&#8217;s our responsibility to live up to these expectations.</p>
<p>With the simplicity and speed of these general purpose algorithms, it&#8217;s possible to generate hashes looking for <a href="http://en.wikipedia.org/wiki/Collision_(computer_science)">collisions</a> (or even the original value) extremely quickly. It&#8217;s this speed that introduces the fatal flaw; with a database dump containing MD5 hashed passwords, with a fairly small investment most could be recovered within a very small amount of time (mere days for a large database).</p>
<p>Many people are moving to bcrypt as a solution. In Coda Hale&#8217;s &#8220;<a href="http://codahale.com/how-to-safely-store-a-password/">How To Safely Store A Password</a>&#8221; he covers this topic in more detail, complete with useful stats and links to implementations in languages from <a title="C# bcrypt" href="http://derekslager.com/blog/posts/2007/10/bcrypt-dotnet-strong-password-hashing-for-dotnet-and-mono.ashx">C#</a> to <a title="Ruby bcrypt" href="http://github.com/codahale/bcrypt-ruby">Ruby</a> (even <a title="Erlang bcrypt" href="http://github.com/skarab/erlang-bcrypt">Erlang</a> is represented).</p>
<p>If you are looking for ways to better protect your user&#8217;s data, take a closer look at your password storage.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/2nC3YaSRMFAAarug8z7kuu5ZEn0/0/da"><img src="http://feedads.g.doubleclick.net/~a/2nC3YaSRMFAAarug8z7kuu5ZEn0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/2nC3YaSRMFAAarug8z7kuu5ZEn0/1/da"><img src="http://feedads.g.doubleclick.net/~a/2nC3YaSRMFAAarug8z7kuu5ZEn0/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/AdamCaudillsBlog/~4/wbSmYdzLG7Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adamcaudill.com/2010/02/01/secure-password-storage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adamcaudill.com/2010/02/01/secure-password-storage/</feedburner:origLink></item>
		<item>
		<title>What’s your Code Legacy?</title>
		<link>http://feedproxy.google.com/~r/AdamCaudillsBlog/~3/VxMGoXWxAws/</link>
		<comments>http://adamcaudill.com/2009/12/20/whats-your-code-legacy/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 03:42:59 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://adamcaudill.com/?p=526</guid>
		<description><![CDATA[When you move on to your next challenge how will those that inherit your code think of you? Noble or notorious, innovator or insane? This is a question that all developers should ask themselves frequently; though too few ever do. You should always write with the assumption that someday a new developer will take over [...]]]></description>
			<content:encoded><![CDATA[<p>When you move on to your next challenge how will those that inherit your code think of you? Noble or notorious, innovator or insane? This is a question that all developers should ask themselves frequently; though too few ever do. You should always write with the assumption that someday a new developer will take over your code, and they will question every decision and assumption you&#8217;ve made. When this happens, what will they think of you?</p>
<p>Perhaps I&#8217;m more aware of this because I maintain an internally developed shared library that my company uses in every application; but regardless of the scope of the project you should always assume that someday you will hand the project off. Many developers think little about what happens to their code after it passes on to another; what other developers will have to deal with, or how their efforts will be perceived.</p>
<p>When I&#8217;m training a new developer there are a few points I try to reinforce as much as possible:</p>
<ol>
<li>Code is only good if other developers can work on it without extensive training. If it takes days or weeks of introduction to get a new developer up to speed, then you&#8217;ve done something wrong<sup>1</sup>.</li>
<li>Clever solutions are no better than an ugly hack if it&#8217;s not clear what you are doing. If the code isn&#8217;t clear then it&#8217;s not maintainable, if it&#8217;s not maintainable then it&#8217;s junk.</li>
<li>Assume you&#8217;ll be hit by a bus. Always write code with the assumption that you won&#8217;t have the opportunity to cleanly pass the code off to a new maintainer. Never assume that you&#8217;ll have time to come back and clean things up later.</li>
<li>Always perform design reviews, no matter the size of the project<sup>2</sup>. Once you have a design in mind, talk it through with a at least two other developers. Just because you think it&#8217;s clean and clear doesn&#8217;t mean that others will see it that way as well.</li>
<li>Be consistent, always. I&#8217;ve seen more projects ruined by people doing things &#8220;their way&#8221; than anything else. Match style and design when working on an existing project. Be careful when adding new techniques, technologies, or methodologies to an existing project; unless you are willing to update the entire code-base, you can easily create a minefield without realizing it.</li>
</ol>
<p>If you want your work to be seen positively after you move on, start thinking about your heirs today. The opinion they have of you will be almost entirely based on what they see in your code &#8211; not the stories or memories left behind.</p>
<p><sup>1</sup> &#8211; There are always exceptions; these are generalized guidelines, not hard and fast rules.<br />
<sup>2</sup> &#8211; This includes &#8220;throw away&#8221; projects, many projects that are intended to have a short life end up living far longer than intended. This is the most likely place that your heirs will find code that makes them question the quality of your work.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/J2jfd17x3bWOlHQkcVpJcLyLHTc/0/da"><img src="http://feedads.g.doubleclick.net/~a/J2jfd17x3bWOlHQkcVpJcLyLHTc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/J2jfd17x3bWOlHQkcVpJcLyLHTc/1/da"><img src="http://feedads.g.doubleclick.net/~a/J2jfd17x3bWOlHQkcVpJcLyLHTc/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/AdamCaudillsBlog/~4/VxMGoXWxAws" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adamcaudill.com/2009/12/20/whats-your-code-legacy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adamcaudill.com/2009/12/20/whats-your-code-legacy/</feedburner:origLink></item>
		<item>
		<title>bbPress: Is the end near?</title>
		<link>http://feedproxy.google.com/~r/AdamCaudillsBlog/~3/vbLizXPhOyE/</link>
		<comments>http://adamcaudill.com/2009/12/16/bbpress-is-the-end-near/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 21:39:03 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[bbPress]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://adamcaudill.com/?p=530</guid>
		<description><![CDATA[I&#8217;ve been a fan of bbPress for quite some time; I&#8217;ve even contributed code to the project. For those that aren&#8217;t familiar with it, bbPress is an open-source forum system written in PHP. It&#8217;s fast, lightweight, easy to install and even easier to use. It also scales, quite well. bbPress was originally written to power the support [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been a fan of bbPress for quite some time; I&#8217;ve even contributed code to the project. For those that aren&#8217;t familiar with it, bbPress is an open-source forum system written in PHP. It&#8217;s fast, lightweight, easy to install and even easier to use. It also scales, quite well.</p>
<p>bbPress was originally written to power the support forums WordPress.org, which get quite a bit of traffic. Later, it was released as a separate project. While it doesn&#8217;t have nearly the feature set found in more popular systems such as vBulletin or phpBB; it makes up for it in simplicity. It&#8217;s designed to be conversation-centered, where the clear focus is on what people are saying, not the bells and whistles provided by the software.</p>
<p>I&#8217;ve used it for a couple sites and couldn&#8217;t be more pleased; though now I fear the end may be near.</p>
<p><a href="http://automattic.com/">Automattic</a>, the company behind WordPress.com (and <a href="http://bbpress.org/blog/2009/04/talkpress-and-bbpress/">ListPress.com</a>) has <a href="http://bbpress.org/forums/topic/future-of-bbpress">committed</a> to supporting the project; though primarily in context to its role in the WordPress world. bbPress as a separate product has so much potential, though it seems Automattic has little interest in this; instead the interest seems to be in making bbPress just another add-on for WordPress.</p>
<p>At one point there was a lot of excitement and interest surrounding bbPress, though for a project like this to succeed you need input from the community, you need an open and fast paced development process. Unfortunately for bbPress, it had no such process. There were people who had the skill, time, and interest to lead the project and make it a success; but they were pushed away and the project was allowed to stagnate.</p>
<p>Today, there is <a href="http://bbpress.org/blog/2009/12/1-1-feature-poll/">some activity</a> going on, and I&#8217;m glad to see that it won&#8217;t fade away completely; though I see little chance that it will live up to what it could have been. I have a lot of respect for <a href="http://ma.tt/">Matt</a> and Automattic; they&#8217;re very successful and build great products; but they could have done so much more.</p>
<p>bbPress will go on I&#8217;m sure; though I believe only as a shadow of what it could have been. Though maybe Matt will prove me wrong, I certainly hope so.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/Tp91j24dg8bJ5i2TF0fAC3ccZyc/0/da"><img src="http://feedads.g.doubleclick.net/~a/Tp91j24dg8bJ5i2TF0fAC3ccZyc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Tp91j24dg8bJ5i2TF0fAC3ccZyc/1/da"><img src="http://feedads.g.doubleclick.net/~a/Tp91j24dg8bJ5i2TF0fAC3ccZyc/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/AdamCaudillsBlog/~4/vbLizXPhOyE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adamcaudill.com/2009/12/16/bbpress-is-the-end-near/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adamcaudill.com/2009/12/16/bbpress-is-the-end-near/</feedburner:origLink></item>
		<item>
		<title>Leaving GoDaddy</title>
		<link>http://feedproxy.google.com/~r/AdamCaudillsBlog/~3/PZIEic5GwXk/</link>
		<comments>http://adamcaudill.com/2009/12/14/leaving-godaddy/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 00:31:31 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[DreamHost]]></category>
		<category><![CDATA[GoDaddy]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://adamcaudill.com/?p=521</guid>
		<description><![CDATA[In December 2002 I made my first purchase from GoDaddy, since then I&#8217;ve spent $1,200 with them. Over the years I&#8217;ve seen them grow up to be a major force both in the registration and web hosting markets; I&#8217;ve also seen them go from lean and efficient to annoying and unfriendly. Once upon a time [...]]]></description>
			<content:encoded><![CDATA[<p>In December 2002 I made my first purchase from GoDaddy, since then I&#8217;ve spent $1,200 with them. Over the years I&#8217;ve seen them grow up to be a major force both in the registration and web hosting markets; I&#8217;ve also seen them go from lean and efficient to annoying and unfriendly.</p>
<p>Once upon a time GoDaddy had the best prices and the best search of any registrar; unfortunately things often change, and not always for the best. As time went on they added more products and adopted a very &#8220;in your face&#8221; style of marketing. For years I&#8217;ve dismissed the aggressive marketing as the cost of the low prices, but times have changed.</p>
<p>The aggressive marketing style, incredibly difficult to cancel subscriptions, feature <a href="http://adamcaudill.com/2009/10/03/cancel-godaddys-domain-privacy/">lock in</a>, and many other annoyances and issues. And why do I put up with this? It&#8217;s not the low prices, as for many things my current <a href="http://dreamhost.com/">hosting company</a> is far cheaper. I&#8217;m no longer locked, it&#8217;s not that. Loyalty? That it, well, that was it.</p>
<p>After 7 years, and $1,200 &#8211; I&#8217;ve started moving my domains over to my hosting company; and so far I couldn&#8217;t be happier. No aggressive marketing, good service, and they don&#8217;t nickel and dime me to death.</p>
<p>Loyalty can be a good thing, but how much is loyalty costing you? Is it worth it?</p>

<p><a href="http://feedads.g.doubleclick.net/~a/bqU0qXZWQ4gi8C6wIAAAjcmixnw/0/da"><img src="http://feedads.g.doubleclick.net/~a/bqU0qXZWQ4gi8C6wIAAAjcmixnw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/bqU0qXZWQ4gi8C6wIAAAjcmixnw/1/da"><img src="http://feedads.g.doubleclick.net/~a/bqU0qXZWQ4gi8C6wIAAAjcmixnw/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/AdamCaudillsBlog/~4/PZIEic5GwXk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adamcaudill.com/2009/12/14/leaving-godaddy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adamcaudill.com/2009/12/14/leaving-godaddy/</feedburner:origLink></item>
		<item>
		<title>Cancel GoDaddy’s Domain Privacy</title>
		<link>http://feedproxy.google.com/~r/AdamCaudillsBlog/~3/o9Lb0FcVfww/</link>
		<comments>http://adamcaudill.com/2009/10/03/cancel-godaddys-domain-privacy/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 16:26:49 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[GoDaddy]]></category>
		<category><![CDATA[Hosting]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://adamcaudill.com/?p=523</guid>
		<description><![CDATA[While trying to renew a few domain names recently, I found that cancelling the Privacy service that GoDaddy offers (via Domains By Proxy) is much more difficult than I had expected. The $8.99/year service conceals your name, address, and phone number from the public WHOIS listing. Being concerned about privacy as most people are (or at least [...]]]></description>
			<content:encoded><![CDATA[<p>While trying to renew a few domain names recently, I found that cancelling the Privacy service that GoDaddy offers (via <a href="https://www.domainsbyproxy.com/">Domains By Proxy</a>) is much more difficult than I had expected. The $8.99/year service conceals your name, address, and phone number from the public WHOIS listing.</p>
<p>Being concerned about privacy as most people are (or at least should be) it seemed a reasonable option but when multiplied by quite a few domains, it gets rather expensive. So during this last round of renewals I decided to cancel the service; figuring it would be no harder than removing the item from the shopping cart. To my surprise, it wasn&#8217;t nearly so easy.</p>
<p>Turns out that you have to sign into the DomainsByProxy web site with a Customer ID and password to cancel the service; so I tried the obvious and used my GoDaddy ID and password, though no such luck. I searched my email archives and didn&#8217;t find a single email from DomainsByProxy, at this point I was pretty sure whatever email address they had on file wasn&#8217;t valid, which is bad news for me. <span style="background-color: #ffffff; ">While there is an option to <a href="https://www.domainsbyproxy.com/RetrieveAccount.aspx?prog_id=&amp;myaurl=/login.aspx">recover your customer ID</a>, if their records aren&#8217;t accurate then it&#8217;s of no real use.</span></p>
<p>But there is hope.</p>
<p>It took a fair bit of reading and testing, but I finally found a method to get to your account IDs, and it&#8217;s fairly simple:</p>
<ol>
<li>Go to the <a href="http://www.godaddy.com/gdshop/dbp/landing.asp">Private Registration Page</a> on GoDaddy&#8217;s site (make sure you&#8217;re logged in to your GoDaddy account)</li>
<li>Type in some random characters into the search box</li>
<li>On the results page, click &#8220;Continue to Registration&#8221;</li>
<li>Click &#8220;No Thanks&#8221; on the ad page</li>
<li>Scroll down to the section labeled &#8220;<em>3. Select Your Domains By Proxy® Account</em>&#8220;</li>
</ol>
<p>You should now see your customer IDs for the DomainsByProxy web site. The web site only shows the first four account IDs, if you have more than that you can contact DomainsByProxy and have them merge the account IDs you know. Just continue the process until you have all of your accounts merged into one.</p>
<p>Unless you&#8217;ve changed your password on the DomainsByProxy web site, your GoDaddy password should work. From there, you can update your information &#8211; or like me, cancel the service completely. Now you are free to renew the domain without paying the extra annual fee or transfer to another registrar.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/efiTFZukU7NLwFCbXOjjIXBoMRU/0/da"><img src="http://feedads.g.doubleclick.net/~a/efiTFZukU7NLwFCbXOjjIXBoMRU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/efiTFZukU7NLwFCbXOjjIXBoMRU/1/da"><img src="http://feedads.g.doubleclick.net/~a/efiTFZukU7NLwFCbXOjjIXBoMRU/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/AdamCaudillsBlog/~4/o9Lb0FcVfww" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adamcaudill.com/2009/10/03/cancel-godaddys-domain-privacy/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://adamcaudill.com/2009/10/03/cancel-godaddys-domain-privacy/</feedburner:origLink></item>
		<item>
		<title>GetSatisfaction: Is it worth it?</title>
		<link>http://feedproxy.google.com/~r/AdamCaudillsBlog/~3/DYL5Sa6v6JE/</link>
		<comments>http://adamcaudill.com/2009/07/19/getsatisfaction-is-it-worth-it/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 05:09:35 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Business of Software]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[ISV]]></category>
		<category><![CDATA[Micro-ISV]]></category>

		<guid isPermaLink="false">http://adamcaudill.com/?p=463</guid>
		<description><![CDATA[While working on the list of tools and services to write about as part of my Start-up Tools series, Get Satisfaction has been the hardest to decide on. After a lot of reading, I decided against recommending it, though I had to write about it because so many companies have opted to use it. Get [...]]]></description>
			<content:encoded><![CDATA[<p>While working on the list of tools and services to write about as part of my <a href="http://adamcaudill.com/2009/06/18/start-up-tools-services/">Start-up Tools</a> series, <a href="http://getsatisfaction.com/">Get Satisfaction</a> has been the hardest to decide on. After a lot of reading, I decided against recommending it, though I had to write about it because so many companies have opted to use it.</p>
<p>Get Satisfaction is a great concept for the most part &#8211; what it boils down to is a specialized forum service for your customers to discuss issues and ideas about your products. But it&#8217;s not quite that simple, as your customer can create a site with them in your company&#8217;s name, without your knowledge as 37signals <a href="http://www.37signals.com/svn/posts/1650-get-satisfaction-or-else">found out</a> &#8211; (and they weren&#8217;t happy about it). The article by 37signals goes into length about the issues surrounding the service, so I won&#8217;t repeat them all here &#8211; it&#8217;s well worth the time to read if you are thinking about using the service.</p>
<p>While they do offer a rather anemic free version, if you want anything useful you&#8217;ll have to shell out for one of the <a href="http://getsatisfaction.com/features">paid versions</a> which start at $99/month. That&#8217;s $1,188 per year, which for most start-ups would be among their top expenses.</p>
<p>While they have made some <a href="http://blog.getsatisfaction.com/2009/03/31/kissing-and-making-up-with-37signals/">changes</a> to reduce the mafioso feel that many complained about, however the feeling that you have to participate if you care about customers still lingers. With prices ranging from $99 to $899 a month for what amounts to little more than a forum service &#8211; it&#8217;s simply too expensive for many start-ups.</p>
<p>While I understand that they are in business to make money just as I am, my budget is still very tight and there are many other needs fighting over that same money. Supporting customers has to be the top priority, but is this really the best way to achieve that?</p>
<p>To me it seems that money may be better spent on hardware upgrades to make our servers faster or some <a href="http://crazyegg.com/">real analytics</a> to make sure our web sites are as easy to use as possible. While the service has some nice benefits, spending over $1,100 a year for access to a locked-down forum just doesn&#8217;t make business sense.</p>
<p>Oh, and do you want it to match the look and feel of your web site? We&#8217;ll for that you have to upgrade to their top plan at a whopping $899 a month. Yet themes are a basic feature of virtually all forum systems.</p>
<p>For me, I think I&#8217;ll give <a href="http://bbpress.org/">bbPress</a> a shot &#8211; it&#8217;s free, open source, and easy to use &#8211; then I&#8217;ll take that $99/month and find better ways for it to serve my customers.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/QmHPFIYJiiSBjYURSAK7zusF1aU/0/da"><img src="http://feedads.g.doubleclick.net/~a/QmHPFIYJiiSBjYURSAK7zusF1aU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/QmHPFIYJiiSBjYURSAK7zusF1aU/1/da"><img src="http://feedads.g.doubleclick.net/~a/QmHPFIYJiiSBjYURSAK7zusF1aU/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/AdamCaudillsBlog/~4/DYL5Sa6v6JE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adamcaudill.com/2009/07/19/getsatisfaction-is-it-worth-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adamcaudill.com/2009/07/19/getsatisfaction-is-it-worth-it/</feedburner:origLink></item>
		<item>
		<title>Start-up Tools: Open Atrium</title>
		<link>http://feedproxy.google.com/~r/AdamCaudillsBlog/~3/m83jMq1TgIw/</link>
		<comments>http://adamcaudill.com/2009/07/18/start-up-tools-open-atrium/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 18:19:31 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Business of Software]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[ISV]]></category>
		<category><![CDATA[Micro-ISV]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://adamcaudill.com/?p=459</guid>
		<description><![CDATA[When it comes to small business project management, Basecamp by 37signals has been the king of the hill for some time. Now though, there is an exciting new player in the field: Open Atrium. It&#8217;s a Drupal based open source project management system somewhat like Basecamp, though with many more features. Open Atrium is new [...]]]></description>
			<content:encoded><![CDATA[<p>When it comes to small business project management, <a href="http://www.basecamphq.com/">Basecamp</a> by <a href="http://www.37signals.com/">37signals</a> has been the king of the hill for some time. Now though, there is an exciting new player in the field: <a href="http://openatrium.com/">Open Atrium</a>. It&#8217;s a <a href="http://drupal.org/">Drupal</a> based open source project management system somewhat like Basecamp, though with many more features.</p>
<p style="text-align: center;"><img class="aligncenter" title="Atrium Logo" src="http://adamcaudill.com/files/2009-07-18_1345.png" alt="" width="139" height="49" /></p>
<p>Open Atrium is new on the scene, with beta 1 being released just 4 days ago &#8211; though it&#8217;s already rather polished and seems to work well. While there are some hiccups with the installer and a disappointing lack of documentation, it&#8217;s still very easy to install and takes only a few minutes to get running.</p>
<p>It has all the major <a href="http://openatrium.com/features">features</a> that you would expect, plus a few extras such as a twitter-like shoutbox system. Here are the highlights:</p>
<ul>
<li>Blogging</li>
<li>Calendar</li>
<li>Dashboard</li>
<li>Document Storage</li>
<li>Task Management</li>
</ul>
<p>Being open source and self-hosted adds some nice benefits; unlimited customization, full control of your data, and my favorite: can be installed on a non-public web server. Having you project management system sit behind a VPN is a great way to avoid <a href="http://www.techcrunch.com/2009/07/14/in-our-inbox-hundreds-of-confidential-twitter-documents/">data leaks and embarrassments</a>.</p>
<p>I&#8217;m still debating which is best, Basecamp or Open Atrium &#8211; but if you want to save some money, Open Atrium is worth looking into.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/Jql3qTjPlkeomzoPCVe5ScXXN4s/0/da"><img src="http://feedads.g.doubleclick.net/~a/Jql3qTjPlkeomzoPCVe5ScXXN4s/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Jql3qTjPlkeomzoPCVe5ScXXN4s/1/da"><img src="http://feedads.g.doubleclick.net/~a/Jql3qTjPlkeomzoPCVe5ScXXN4s/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/AdamCaudillsBlog/~4/m83jMq1TgIw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adamcaudill.com/2009/07/18/start-up-tools-open-atrium/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://adamcaudill.com/2009/07/18/start-up-tools-open-atrium/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.894 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-09-01 10:16:58 --><!-- Compression = gzip -->
