<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>The Digital Tumbleweed</title>
	<atom:link href="http://digitaltumbleweed.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://digitaltumbleweed.com</link>
	<description>Thoughts and ramblings of an enthusiast</description>
	<pubDate>Wed, 12 Nov 2008 02:18:23 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>The Code Makes My Eyes Bleed</title>
		<link>http://digitaltumbleweed.com/2008/11/11/the-code-makes-my-eyes-bleed/</link>
		<comments>http://digitaltumbleweed.com/2008/11/11/the-code-makes-my-eyes-bleed/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 02:18:23 +0000</pubDate>
		<dc:creator>ncampbell</dc:creator>
		
		<category><![CDATA[code]]></category>

		<category><![CDATA[development]]></category>

		<category><![CDATA[everyday coding]]></category>

		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://digitaltumbleweed.com/?p=157</guid>
		<description><![CDATA[Not often do you stumble into projects that are pristine. I certainly haven&#8217;t anyway. Almost every project I&#8217;ve been involved with has required some degree of unfarking to bring it to a close. But, surely there are things that we can do to make it so that those who have to come in and &#8220;finish&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>Not often do you stumble into projects that are pristine. I certainly haven&#8217;t anyway. Almost every project I&#8217;ve been involved with has required some degree of unfarking to bring it to a close. But, surely there are things that we can do to make it so that those who have to come in and &#8220;finish&#8221; don&#8217;t have the undying urge to gouge their eyes out with rusty spoons?</p>
<p><img class="alignright" title="Docs" src="http://www.thelegalguardian.com/images/documentation.jpg" alt="" width="234" height="156" />In general, documentation is a good idea. We all know what I&#8217;m talking about, but why don&#8217;t we do it? It takes time, it&#8217;s not maintained, and who really reads it anyway? Everyone reads it! Assume that anyone will read the comments you make in your code. It&#8217;s a very easy way to get inside someone&#8217;s head. Today I was trudging through some code and had to harass our Sr. Engineer countless times to figure out why &lt;insert snippet of code&gt; was there. Half the time I asked he said, &#8220;hmmm&#8230;I don&#8217;t know.&#8221; It then took the two of us cruising the codebase to figure out the purpose.</p>
<p><img class="alignleft" title="News Flash" src="http://images1.wikia.nocookie.net/muppet/images/c/c8/Title.newsflash.jpg" alt="" width="155" height="118" />The primary argument against documentation seems to be that the code should be readable on it&#8217;s own. <em>News flash- it never is</em>. I may be the brightest coder in the world, I&#8217;m not&#8230;but go with me, but trying to read the code that other people produce can be painstaking. Hell, I have a hard enough time reading the written language of some people, let alone code. So please, document what you&#8217;re doing. You&#8217;ll save everyone time.</p>
<p>There are many ways to accomplish the same task. Know this. My solution for a specific problem and yours may be completely different, in fact I would bet that they are statistically more likely to be different. We all have different backgrounds and standards so things will be different. But, that doesn&#8217;t mean that you have to ruin any hope that someone can jump into your code.</p>
<p><img class="alignright" title="Tacks" src="http://www.pensionriskmatters.com/RedTack.JPG" alt="" width="236" height="168" />I&#8217;ve worked on projects where the code was like a never ending maze. Sure there are languages that allow you to do some pretty cool things. You have functional languages, recursion, delegation, list comprehension, etc. and all of these are incredibly powerful. However, making your application only work by passing function pointers around confuses the hell out of some great developers let alone the ones that are likely to maintain the code! Be kind to others. If you&#8217;re not you&#8217;ll likely be sitting on tacks tomorrow.</p>
<p>How would you like to wake up tomorrow and be called &#8220;a_32&#8243;? Ok, then you&#8217;re weird. I&#8217;d be a bit unhappy. I&#8217;m also unhappy when I see code riddled with that. How long does it take to type arrayList32? Honestly. I hate the numbering and all that too, but that&#8217;s just irritation. Make your names a bit more descriptive. Nobody is going to be able to take a codeset riddled with alphabet soup and make sense of it. if it&#8217;s a Hashtable of Sessions, use something like &#8220;session_table&#8221;, or something similar.</p>
<p>We all have to get better with these things. I know I do. But, think about the people that are going to be fixing the problems you create today and remember that they likely know where you live at least 8 hours of the day.</p>
]]></content:encoded>
			<wfw:commentRss>http://digitaltumbleweed.com/2008/11/11/the-code-makes-my-eyes-bleed/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Versioning Your &#8220;Shit&#8221;</title>
		<link>http://digitaltumbleweed.com/2008/10/09/versioning-your-shit/</link>
		<comments>http://digitaltumbleweed.com/2008/10/09/versioning-your-shit/#comments</comments>
		<pubDate>Thu, 09 Oct 2008 05:01:33 +0000</pubDate>
		<dc:creator>ncampbell</dc:creator>
		
		<category><![CDATA[versioning]]></category>

		<category><![CDATA[backup]]></category>

		<category><![CDATA[data]]></category>

		<category><![CDATA[data portability]]></category>

		<category><![CDATA[versions]]></category>

		<guid isPermaLink="false">http://digitaltumbleweed.com/?p=145</guid>
		<description><![CDATA[Almost as important as the content on your computer is the recovery of said content. What do you do when your files go *poof*? How well do you handle the meltdown of your hard drive? Me, not very well, but I tend to be able to get the major parts back. One of the reasons [...]]]></description>
			<content:encoded><![CDATA[<p>Almost as important as the content on your computer is the recovery of said content. What do you do when your files go *poof*? How well do you handle the meltdown of your hard drive? Me, not very well, but I tend to be able to get the major parts back. One of the reasons for this is because I version my _shit_ and you should too.</p>
<p><img class="alignleft" title="Old Tape Drive" src="http://www.thegalleryofoldiron.com/OLDTAPELARGE.JPG" alt="" width="268" height="387" />Let us cover some of the basics. What I&#8217;m not talking about here is backing up your mp3&#8217;s or movies. Also, I&#8217;m not talking about making duplicates of your image files. There is no point to it unless you modify those files frequently. I&#8217;m talking about things like, your budget files, check books, documents, and anything that you customize on a fairly regular basis.</p>
<p>Personally, I have my .emacs file in a location that can be accessed at all times. But, I have it versioned so that when I make a change to that file I can deploy it on any machine that I have emacs on with a quick &#8220;bzr merge&#8221;. It&#8217;s great. Also, I can version my Gnome config to make sure that my menu items are available all over.</p>
<p>Now, more _critically_. What do you do when you have customized a user interface and those settings are stored in a file on your local system? For instance, &#8220;Program Files/World of Warcraft/WTF/Config.wtf&#8221;.  This file can change very frequently, sometimes on purpose. Versioning this file means that I can try all sorts of settings out and should something make the view disappear, I can revert back to a stable version. Not to mention, I can keep my settings the same across machines.</p>
<p>Now, I know what you&#8217;re thinking. Why in the world does it make sense to do it if all I&#8217;m doing is browsing the web? First, I&#8217;d question why you even have a computer, get an iPhone. Second, If you have done anything to customize your browser or bookmark information, that all must be stored somewhere. This is all information that you can version.</p>
<p>Keep in mind that while I did mention that I wasn&#8217;t talking about backups, it is important to back your _shit_ up. If you don&#8217;t, you&#8217;re bound to lose a lot, this is coming from someone who lost over 80GB of music collected over about 10 years. It is important, you should do it. Versioning your information will help with recovery, but is not the end all solution.</p>
<p><img class="alignright" title="Data" src="http://www.1025mecc.com/website/lidarc/images/leftImage.jpg" alt="" width="311" height="399" />If you&#8217;re on board with versioning then you&#8217;ll need a strategy. Here is the approach I take.</p>
<ul>
<li>Get a secondary hard drive. This can be a full server or just an external SATA drive. Format it up, and we&#8217;re good to go.</li>
<li>To back stuff up, you can just start dumping information on there.</li>
<li>To version things, you need to do a few things.</li>
<li>You need to pick a versioning tool that works for you. There are a large number of them out there. I prefer <a title="BZR" href="http://bazaar-vcs.org/">bzr</a>, but it does not have a graphical interface. That may be a killer for some. If you would like a UI, I recommend <a title="Subversion" href="http://subversion.tigris.org/">subversion</a> with <a title="TortoiseSVN" href="http://tortoisesvn.net/">TortoiseSVN</a> or <a title="VersionsAPP" href="http://www.versionsapp.com/">VersionsApp</a>. There are plenty of tutorials online on how to use these tools, so I&#8217;m not going to cover that.</li>
<li>You need to setup a repository on the secondary hard drive. This could mean just creating one on the directory or going into the server and doing it. But, you want to have it on a location that is not directly on your system. This ensures the redundency of your information should you ever need it outside of a system crash/failure.</li>
<li>Once you have the repository, you are good to go. Start adding and removing and checking in and out.</li>
</ul>
<p>I hope this has been informative and/or helpful to some of you. If anyone is interested I could do some deeper writeups on how to use the tools I mentioned. I just don&#8217;t feel like regurgitating Google. <img src='http://digitaltumbleweed.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Feel free to post any questions you have.</p>
]]></content:encoded>
			<wfw:commentRss>http://digitaltumbleweed.com/2008/10/09/versioning-your-shit/feed/</wfw:commentRss>
		</item>
		<item>
		<title>i.depreciate()</title>
		<link>http://digitaltumbleweed.com/2008/09/22/idepreciate/</link>
		<comments>http://digitaltumbleweed.com/2008/09/22/idepreciate/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 03:12:06 +0000</pubDate>
		<dc:creator>ncampbell</dc:creator>
		
		<category><![CDATA[management]]></category>

		<category><![CDATA[assets]]></category>

		<category><![CDATA[depreciation]]></category>

		<category><![CDATA[worth]]></category>

		<guid isPermaLink="false">http://digitaltumbleweed.com/?p=63</guid>
		<description><![CDATA[It&#8217;s interesting to think about yourself in the job market. How did you emerge? I came out of school and couldn&#8217;t find anything. It seemed that the jobs I was looking for weren&#8217;t available. The thoughts and ideas that I had, &#8220;be the best in your class&#8221; and &#8220;go above and beyond&#8221; drove me to [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="Job Market" src="http://www.floridahomeloan.com/uploaded_images/job-market-709795.jpg" alt="" width="347" height="204" />It&#8217;s interesting to think about yourself in the job market. How did you emerge? I came out of school and couldn&#8217;t find anything. It seemed that the jobs I was looking for weren&#8217;t available. The thoughts and ideas that I had, &#8220;be the best in your class&#8221; and &#8220;go above and beyond&#8221; drove me to believe that I would inevitably land an incredible job for a <a title="Google" href="http://www.google.com">Google</a> or the next big tech company. I finally got a byte (yea I just went there) to my many casts into the stream and landed at a web development shop.</p>
<p>Why do I bring this up? I&#8217;m trying say that I had an incredibly inflated vision of my worth to a company. This isn&#8217;t to say that it was necessarily innaccurate, although it was it&#8217;s irrelevant. All that I am saying is that my personal valuation of what I could provide to a company was fairly high. But, what I didn&#8217;t realize how little I was actually bringing.</p>
<p><img class="alignleft" title="Depreciation" src="http://www.directdep.com.au/img/depreciation.jpg" alt="" width="168" height="336" />Think about it this way. A company spends a great deal of time, effort, and resources in both people and materials to hire you, bring you up to speed, and then keep you happy over your time with that company. This isn&#8217;t a simple equation, but keeping it basic it looks like this:</p>
<blockquote><p>recruiting + resources + salary = x</p></blockquote>
<p>&#8216;x&#8217; is the monetary value that you are supposed to be worth to the company. That&#8217;s right, asset value. As with most things in accounting that hold a value, they depreciate unless more money is put into them each year. This is not giving you a raise or doing a review. Instead, this appreciation only comes from you, as an employee, getting better. This could be conferences, books, feeds, or even sitting in on a code review. Otherwise, your value to the company goes down each year.</p>
<p>That is called depreciation. When you purchase/build a house, the value doesn&#8217;t stay the same. You need to invest more to get more. This means time and money. If you can keep yourself on top of what is going on in the world within your field and be able to handle many situations, you&#8217;re keeping yourself classified as an appreciating asset.</p>
<p>I say all of this because it has helped me over the years to realize my actual worth to a company rather than my inflated view. If I never evolved or got any better, then I would still be where I started, which is casting lines into the stream. In fact, I&#8217;d be worse than that, because I&#8217;d have depreciated.</p>
]]></content:encoded>
			<wfw:commentRss>http://digitaltumbleweed.com/2008/09/22/idepreciate/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A State of Search</title>
		<link>http://digitaltumbleweed.com/2008/09/07/a-state-of-search/</link>
		<comments>http://digitaltumbleweed.com/2008/09/07/a-state-of-search/#comments</comments>
		<pubDate>Mon, 08 Sep 2008 03:26:06 +0000</pubDate>
		<dc:creator>ncampbell</dc:creator>
		
		<category><![CDATA[Search]]></category>

		<category><![CDATA[content]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://digitaltumbleweed.com/?p=122</guid>
		<description><![CDATA[Recently, there have been a number of search tools to come out. Each featuring it&#8217;s own set of enhancements. But, at some point we have to look at the technology and decide on what is practical, and whether it will truly push search forward. With the advent of PowerSet, Autonomy, TinEye, and others we see [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="Binoculars" src="http://www.youthblog.org/binoculars.jpg" alt="" width="247" height="247" />Recently, there have been a number of search tools to come out. Each featuring it&#8217;s own set of enhancements. But, at some point we have to look at the technology and decide on what is practical, and whether it will truly push search forward. With the advent of <a title="Power Set" href="http://www.powerset.com">PowerSet</a>, <a title="Autonomy" href="http://www.autonomy.com/">Autonomy</a>, <a title="Tiny Eye" href="http://tineye.com">TinEye</a>, and others we see some incredibly powerful search tools. But, when does that move into the masses? Why hasn&#8217;t Google picked up the ability to parse and search video streams yet? Hell, they have a great test base in <a title="You Tube" href="http://www.youtube.com">YouTube</a>&#8230;</p>
<p>Search is a hard problem. It&#8217;s more than just saying, &#8220;This document uses the term Google. When someone searches for Google, I&#8217;m going to return this as a result.&#8221; Sure that&#8217;s part of the puzzle, but it doesn&#8217;t involve semantics. Google and others have been focused on <em>web semantics</em> for a long time. But, that doesn&#8217;t do anything for native language processing, sentiment, video translation, audio translation, and so on.</p>
<p>The strange thing is that humans don&#8217;t work this way. The human brain functions through relevance. So, if someone shows me a piece of paper with the solar system and the planets. And then I see a television show about the asteroid belt between Mars and Jupiter, I can infer a lot of things. Why don&#8217;t our technologies?</p>
<p>It seems that we are all afraid to move relevancy into it&#8217;s next stages. We have the technology to do it, but nobody is challenging the giants. I think that <a title="The Importance of a Competitive Search Market" href="http://www.techcrunch.com/2008/05/25/the-importance-of-a-competitive-search-market/">Michael Arrington</a> got it right and that <a title="Why Search Competition Isn't The Point" href="http://radar.oreilly.com/2008/05/why-search-competition-isnt-the-point.html">Tim O&#8217;Reilly</a> missed the <img class="alignleft" title="Web2.0 RIAs" src="http://ru3.com/luc/uploaded_images/web2-big-745097.jpg" alt="" width="315" height="361" />sentiment a bit. There needs to be competition. But for someone to focus on just an area where &#8220;Google isn&#8217;t&#8221; is not powerful. Look at Summize- Twitter, bought Summize and now has a worthwhile search tool for the Tweetspace as Tim O&#8217;Reilly calls it. But, that means nothing in terms of the potential they could have had. If they worked to get into FriendFeed, Plaxo, etc. they would have been the search tool for all of the social networks. This makes them far more powerful as a product, and company. This is what I see happening with Power Set and Tiny Eye. They are too focused on the problem they are trying to solve.</p>
<p>I think that search is the point. Search can bring our seemingly separated applications together. Search makes my blog, your blog, and everyone&#8217;s blog relevant. It enables me to write something here and within hours, have it be related to something that a few other people are talking about. So, search <strong>is</strong> the problem!</p>
<p>What I&#8217;d like to see is a search tool to come out with semantic search across all mediums. With Web2.0 and RIA&#8217;s on the rise&#8230;we need relatable and relevant information that isn&#8217;t stuck within the constructs of the conventional internet. This is when search will be <a title="Is Search Really 90% Solved?" href="http://www.techcrunch.com/2008/09/07/is-search-really-90-solved/">90%</a> <a title="Marissa Mayer: Talk About Google" href="http://latimesblogs.latimes.com/technology/2008/09/marissa-mayer-t.html">solved</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://digitaltumbleweed.com/2008/09/07/a-state-of-search/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Choosing Your Tools and Solving Problems</title>
		<link>http://digitaltumbleweed.com/2008/09/06/choosing-your-tools-and-solving-problems/</link>
		<comments>http://digitaltumbleweed.com/2008/09/06/choosing-your-tools-and-solving-problems/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 22:46:59 +0000</pubDate>
		<dc:creator>ncampbell</dc:creator>
		
		<category><![CDATA[programming]]></category>

		<category><![CDATA[library]]></category>

		<category><![CDATA[problems]]></category>

		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://digitaltumbleweed.com/?p=114</guid>
		<description><![CDATA[In any project there comes a point in time when you think to yourself, &#8220;This has probably already been done before.&#8221; If you don&#8217;t get that then maybe I&#8217;m just weird, but I prefer to not have to reinvent the wheel. There are plenty of intelligent people out there who must have had this problem [...]]]></description>
			<content:encoded><![CDATA[<p>In any project there comes a point in time when you think to yourself, &#8220;This has probably already been done before.&#8221; If you don&#8217;t get that then maybe I&#8217;m just weird, but I prefer to not have to reinvent the wheel. There are plenty of intelligent people out there who must have had this problem before, and if not&#8230;then why is mine different?</p>
<h4>The Wheel?!? Oh my.</h4>
<p>So you&#8217;ve decided that you need to use someones library. You&#8217;ve been searching and found many around. Great. That means you don&#8217;t have to spend the time to develop the solution yourself. In this case, you&#8217;ll want to pick the right tool for the job. But, how do you distinguish which is better? You may be thiking, easy, just pick and go. But, if you&#8217;re building a product, this decision can be crucial. It can affect many peoples time. So, again, how do you pick the right tool. While each situation has different dependencies, here are some of the things I use to decide.</p>
<p><strong>What is the barrier of entry?</strong> In many cases I&#8217;m not going to be the last person to touch a piece of code. And, on top of that, the next person to touch it will be in maintenance/bug fix mode. So, I want something that is easy for someone else to jump into. This mostly means API. While there are a few other pieces to this that I&#8217;ll explain later, API is what you will use inside your code. Thus, someone coming into your code should be able to make sense of it without having to ask you all the time. So, the library should be easy to learn.</p>
<p><img class="alignleft" title="Community" src="http://blogs.zdnet.com/open-source/images/developer_community.jpg" alt="" width="227" height="181" /><strong>What is the community like?</strong> This is a very big factor in the decision because, like above, if the code is not easy to understand or if I suspect that there are issues with the library, I have the ability to find out when the community is large. This doesn&#8217;t mean that small communities are not helpful, look at the <a title="Axiom Stack" href="http://www.axiomstack.com">Axiom Stack</a>&#8230;Small for now, but staying active on the forums. Is there some excitement? Is anyone talking about the library/tool?</p>
<p><strong>Are you trying to sandblast a cracker?</strong> Every engineer goes through the phase where s/he architects for the moon. This is a bad thing. Using <a title="Dojo Toolkit" href="http://www.dojotoolkit.com">Dojo</a> or <a title="ExtJS" href="http://www.extjs.com">ExtJS</a> to alert some information to a webpage is sandblasting a cracker. Getting a backhoe to pick up dogcrap is sandblasting a cracker. Building a $4000 machine to play Pong is sandblasting a cracker. The point is, don&#8217;t overdo it. Pick something that is going to work for your problem, but that wont hinder performance, decrease everyone&#8217;s productivity, and cost a lot in the long run. You want the gains to be greater than the cost.</p>
<p><strong>What is the quality of literature available?</strong> One thing I&#8217;ve noticed on the Django site is that the documentation is phenomenal. Not only do they have a 20+ chapter book detailing A-Z on Django, but they have their API documentation as well. While the API docs could use some sprucing, the information available is incredible. This is the same for ExtJS. The documentation is very thought out and appears as though it was a focal point in the development process. To add onto this, are there any hard-copy books available. Java has numerous books available. This makes it easier to find quick answers or to learn something from the &#8220;experts&#8221;.</p>
<h4>What are we, neanderthals?</h4>
<p>This is the time when you&#8217;ve searched. You find nothing. Not a single result on Google. You check to make sure you didn&#8217;t fat finger the search query, and still nothing. Well, it&#8217;s time to break out the red bull and prepare for that all night-er right?</p>
<p><strong>Stop! It&#8217;s hammer time.</strong> First, before you start writing any code, rethink your problem. A lot of times you&#8217;ll create problems that don&#8217;t exist. By this I mean, you&#8217;re attempting to solve an issue that isn&#8217;t there. Another common situation is that you forget about the overall picture because you&#8217;ve been staring at the same problem for 15 hours straight. Take a break and come back to it. It may be that the problem you thought you had is a bit different or that there is a slightly different way of thinking about it. By removing yourself you allow your subconscious to process it a bit before returning.</p>
<p><img class="alignright" title="Brick Face" src="http://www.photoshoptalent.com/images/contests/rage/thumbs/rage_48612ab80fe97.jpg" alt="" width="195" height="212" /><strong>Use your brick wall.</strong> In almost every programmers toolkit exists a brick wall. This is not for slamming his/her head against it. Instead it&#8217;s a person that s/he trusts to bounce ideas off of. Quite a lot of things make sense in my head&#8230;it&#8217;s unfortunate that those things don&#8217;t always pan out in reality. Thus, the brick wall. If I can bounce my ideas around a bit I&#8217;ll come to a better solution. Even if the person I&#8217;m talking to doesn&#8217;t say a word about what I&#8217;m talking about.</p>
<p><strong>Buckle up</strong>. If you&#8217;re confident that you&#8217;re problem exists then it&#8217;s time to hit it head on. <a title="Trickle Theory" href="http://www.randsinrepose.com/archives/2006/09/25/trickle_theory.html">In the words of Rands, start!</a> If you wait around trying to contemplate the issue, you&#8217;re just wasting time. You&#8217;re confident that you have an issue without a solution, so dive in and start hacking away. Use some common sense when you are solving this problem. If you suspect that the problem may need to be solved again then start making your own library so that others can use it.</p>
<p>I always find that taking a second to think about my problem and then bouncing it off the brick wall helps whether there are tools or not. But, I really find that the community can make or break my use of a library. The collective minds of others is a great thing to have.</p>
]]></content:encoded>
			<wfw:commentRss>http://digitaltumbleweed.com/2008/09/06/choosing-your-tools-and-solving-problems/feed/</wfw:commentRss>
		</item>
		<item>
		<title>BZR: Push and Update</title>
		<link>http://digitaltumbleweed.com/2008/08/27/bzr-push-and-update/</link>
		<comments>http://digitaltumbleweed.com/2008/08/27/bzr-push-and-update/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 21:53:36 +0000</pubDate>
		<dc:creator>ncampbell</dc:creator>
		
		<category><![CDATA[dvcs]]></category>

		<category><![CDATA[bzr]]></category>

		<category><![CDATA[push]]></category>

		<category><![CDATA[update]]></category>

		<guid isPermaLink="false">http://digitaltumbleweed.com/?p=105</guid>
		<description><![CDATA[You always assume that the tools you use on a daily basis are the best for the job. There comes a point when you realize that there could be more&#8230; I had one of those moments today.
I was hacking on some code and thought, it would be great if when I commit and pushed my [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="Bazaar" src="http://bazaar-vcs.org/LogoOptions?action=AttachFile&amp;do=get&amp;target=Bazaar+Logo+2006-07-27.png" alt="" width="108" height="104" />You always assume that the tools you use on a daily basis are the best for the job. There comes a point when you realize that there could be more&#8230; I had one of those moments today.</p>
<p>I was hacking on some code and thought, it would be great if when I commit and pushed my changes back to the main branch, that it also updated the branch with the latest changes.</p>
<p>Enter &#8220;<a title="bzr-push-and-update" href="https://code.launchpad.net/~bzr/bzr-push-and-update/trunk">bzr-push-and-update</a>&#8220;.</p>
<p>To get the tool working, I branched the copy from Launchpad, renamed the directory, and put it into my &lt;python_location&gt;/site-packages/bzrlib/plugins directory and it worked. No hitches or anything.</p>
<p>It&#8217;s great when awesome tools can be easily enhanced. <img src='http://digitaltumbleweed.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://digitaltumbleweed.com/2008/08/27/bzr-push-and-update/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Nerd Handbook</title>
		<link>http://digitaltumbleweed.com/2008/08/26/the-nerd-handbook/</link>
		<comments>http://digitaltumbleweed.com/2008/08/26/the-nerd-handbook/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 13:53:14 +0000</pubDate>
		<dc:creator>ncampbell</dc:creator>
		
		<category><![CDATA[humor]]></category>

		<category><![CDATA[nadd]]></category>

		<category><![CDATA[randsinrepose]]></category>

		<guid isPermaLink="false">http://digitaltumbleweed.com/?p=102</guid>
		<description><![CDATA[For whatever reason, I&#8217;ve only recently stumbled across a post from @Rands at Rands In Repose. It&#8217;s called The Nerd Handbook. I found it to be hilarious and true in many, many ways. It is certainly worth the viewing. Enjoy!
]]></description>
			<content:encoded><![CDATA[<p>For whatever reason, I&#8217;ve only recently stumbled across a post from <a title="Rands" href="http://www.twitter.com/rands">@Rands</a> at <a href="http://randsinrepose.com">Rands In Repose</a>. It&#8217;s called <a title="Rands In Repose: The Nerd Handbook" href="http://www.randsinrepose.com/archives/2007/11/11/the_nerd_handbook.html">The Nerd Handbook</a>. I found it to be hilarious and true in many, many ways. It is certainly worth the viewing. Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://digitaltumbleweed.com/2008/08/26/the-nerd-handbook/feed/</wfw:commentRss>
		</item>
		<item>
		<title>I Want My Olympics Too</title>
		<link>http://digitaltumbleweed.com/2008/08/12/i-want-my-olympics-too/</link>
		<comments>http://digitaltumbleweed.com/2008/08/12/i-want-my-olympics-too/#comments</comments>
		<pubDate>Wed, 13 Aug 2008 02:35:47 +0000</pubDate>
		<dc:creator>ncampbell</dc:creator>
		
		<category><![CDATA[olympics]]></category>

		<category><![CDATA[competition]]></category>

		<guid isPermaLink="false">http://digitaltumbleweed.com/?p=79</guid>
		<description><![CDATA[I thought, in the spirit of the Olympics and all, that I&#8217;d write a post about the Olympics. But, obviously I wanted to throw a new twist on it. I&#8217;m not going to talk about the current Olympics in Beijing. Instead my curiosity lies in the fact that no other field has the equivalent, that [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="Olympics" src="http://www.britannica.com/blogs/wp-content/uploads/2008/04/olympics.jpg" alt="" width="270" height="262" />I thought, in the spirit of the Olympics and all, that I&#8217;d write a post about the Olympics. But, obviously I wanted to throw a new twist on it. I&#8217;m not going to talk about the current Olympics in Beijing. Instead my curiosity lies in the fact that no other field has the equivalent, that I&#8217;m aware of. Why is it that athletes have a venue to compete in every X number of years such that they are awarded medals and the likes?</p>
<p>Maybe it is that we compete daily for survival in the world. Companies go head to head in an attempt to stay in business. Obviously I&#8217;ve over-dramatized it, but beyond this is there any competition setup similarly?</p>
<p>The reason I ask this question is because competition is healthy. What if we had an IT Olympics? What would it involve? Black hat vs. white hat, windows vs. linux, etc.? I&#8217;m just trying to entertain the idea.</p>
<p>What do you think?</p>
]]></content:encoded>
			<wfw:commentRss>http://digitaltumbleweed.com/2008/08/12/i-want-my-olympics-too/feed/</wfw:commentRss>
		</item>
		<item>
		<title>N.A.D.D. and A Spindle of Prototypes</title>
		<link>http://digitaltumbleweed.com/2008/08/12/nadd-and-a-spindle-of-prototypes/</link>
		<comments>http://digitaltumbleweed.com/2008/08/12/nadd-and-a-spindle-of-prototypes/#comments</comments>
		<pubDate>Tue, 12 Aug 2008 04:30:57 +0000</pubDate>
		<dc:creator>ncampbell</dc:creator>
		
		<category><![CDATA[productivity]]></category>

		<category><![CDATA[agile programming]]></category>

		<category><![CDATA[breaks]]></category>

		<category><![CDATA[nadd]]></category>

		<category><![CDATA[problems]]></category>

		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://digitaltumbleweed.com/?p=56</guid>
		<description><![CDATA[Many times in development we get crazy ideas. Not the ones like dancing naked on the bar in the latest club, but the one we think will allow us to rule the world. In those brief moments we envision pyramids, giant aligned rocks, and extremely good apple pie&#8230;with ice cream all served to us on [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="Idea Bulb" src="http://www.lclark.edu/faculty/jsmiller/objects/idea_bulb.jpg" alt="" width="239" height="179" />Many times in development we get crazy ideas. Not the ones like dancing naked on the bar in the latest club, but the one we think will allow us to rule the world. In those brief moments we envision pyramids, giant aligned rocks, and extremely good apple pie&#8230;with ice cream all served to us on a silver platter. When reality creeps back into consciousness we begin to think about the construction of that idea. This is where the prototype comes in.</p>
<p>Unfortunately, or fortunately, I have these kind of ideas every now and again. It leads to some entertaining day dreaming. When I snap to I begin thinking about how I could create that which I&#8217;ve daydramed about. It often leads to half attempted portions of an application. By the time I&#8217;ve finished hacking I have a subset of the functionality I imagined would work. This is the nature of the prototype; see a post I wrote earlier this year <a title="Prototyping in a Digital Age" href="http://digitaltumbleweed.com/2008/05/17/prototyping-in-a-digital-age/">on prototyping</a>.</p>
<p>Now, the constant Attention Deficit that I have due to my <a title="N.A.D.D." href="http://digitaltumbleweed.com/2007/07/13/nadd/">self-diagnosed N.A.D.D.</a> means that as soon as my next big idea comes along I drop what I&#8217;m working on to persue that. This doesn&#8217;t work very well. It leads to a handful of half hearted attempts to produce anything worthwhile. Here are a few tricks that I use to make my day go more smoothly.</p>
<p><strong>Break the monotony:</strong> In order to harness my ideas I tend to need to be fully engrossed in the concept. If I don&#8217;t have full confidence in what I&#8217;m doing then I lack the focus and attention required to be 110%. So, the way I combat this is by taking breaks. If I&#8217;m not fully into what I&#8217;m doing I give myself 5-15 minute breaks every 2 hours or so. This lets me recharge my focus by switching gears quickly over a short interval. Sometimes I&#8217;ll get up and walk around the office and chat quickly with someone about a random topic. But, it gets my mind moving in another direction such that when I return to my desk, I&#8217;m refocused.</p>
<p><strong>Solve a problem:</strong> I try to solve problems. What I mean by this is not that I&#8217;m a problem evangelist, but instead that I work on the problems at hand rather than just trying to architect like crazy. I rather like not being an astronaut and prefer to stay that way. Plus, I tend to be far more interested in challenges, and problems present challenges.</p>
<p><strong>Calling all units:</strong> When you code in pairs you have the interest levels of others to feed from. If you and another person or two other people are working together to solve a problem then you&#8217;re one step head of the game. I like to bounce ideas off others even if only for the brick-wall effect, it helps me to think through issues. When I grab another person to code with we usually end up being very productive pushing each other forward.</p>
<p><img class="alignleft" title="CD Spindle" src="http://www.recyclethis.co.uk/wp-content/uploads/2006/07/cd_spindle250.jpg" alt="" width="128" height="103" />These couple of things help me to be as productive as possible. I try to use these techniques often as tools, just like my editor, in the sense that they can help me to be as effective as possible. When I&#8217;m done, I have a number of full featured prototypes that can be equally evaluated. This makes it easier for me or anyone to assess whether the idea really is something that can takeover the world&#8230;mwahaha.</p>
]]></content:encoded>
			<wfw:commentRss>http://digitaltumbleweed.com/2008/08/12/nadd-and-a-spindle-of-prototypes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Getting It Done &#8220;Write&#8221;</title>
		<link>http://digitaltumbleweed.com/2008/08/11/getting-it-done-write/</link>
		<comments>http://digitaltumbleweed.com/2008/08/11/getting-it-done-write/#comments</comments>
		<pubDate>Tue, 12 Aug 2008 03:18:05 +0000</pubDate>
		<dc:creator>ncampbell</dc:creator>
		
		<category><![CDATA[code]]></category>

		<category><![CDATA[documentation]]></category>

		<category><![CDATA[pragmattic programming]]></category>

		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://digitaltumbleweed.com/?p=60</guid>
		<description><![CDATA[The software development industry has a problem. Most of us are lazy. In this cling to the &#8220;do as little as possible&#8221; attitudes, we lack the necessary desire to document what our code does. Granted, if you are anything like me and write &#8220;perfect&#8221; code then you shouldn&#8217;t need to document your code right? Wrong. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="Code" src="http://blog.ning.com/files/code%20small.jpg" alt="" width="302" height="226" />The software development industry has a problem. Most of us are lazy. In this cling to the &#8220;do as little as possible&#8221; attitudes, we lack the necessary desire to document what our code does. Granted, if you are anything like me and write &#8220;perfect&#8221; code then you shouldn&#8217;t <em>need</em> to document your code right? Wrong. Documentation is the sort of effort that proves fruitful later on in a couple of ways.</p>
<p><strong>The Example</strong></p>
<p>Lets assume for a minute that you are the star programmer. As such you are a wanted person. The team developing Flaglets wants your time and effort to write a backend API that allows access to the database and that the team developing Rewquicks needs you to write an AJAX toolkit that supports loading of everything in under 3 seconds from request to finish.</p>
<p>You know you can do this work. Hell, for you it&#8217;s easy! So you throw on some tunes, and start pounding away. In the sprint you have managed to finish both tasks plus some. Again, you have reasserted your position as company superstar. All is good in the land of you and you move on to your next set of tasks.</p>
<p><strong>The Maintainer</strong></p>
<p>The product has been working for some time but a client found an issue with the way the Flaglets API is working. The data seems to be coming back mangled. You can&#8217;t work on the bug as you are fully allocated to all the current projects at the company.</p>
<p>Insert The Maintainer. This individual will have to run through your code and fix your bug. Oh and did I mention this is a P1? Well it is. Now s/he has to trudge through code to figure out what the internals mean. Leaving aside any inherent problems with the code itself&#8230;how am I to start working with this code?</p>
<p>The Maintainer can ask questions but that generally doesn&#8217;t provide enough context to get rolling. That then means that s/he is left to either return to the developer with more questions, which is not always possible, or fight with the code. The latter is usually the case.</p>
<p><strong>You as the Developer</strong></p>
<p>So, you are still that amazing developer. You are a <a title="Code Monkey vs Code Ninja" href="http://www.kimberlyblessing.com/archive/2008/06/05/code-monkeys-vs-code-ninjas">code ninja</a>, but you&#8217;ve been away from this code for quite some time. It starts to eminate a distinct odor; the scent of &#8220;<a title="Coding Horror: Code Smells" href="http://www.codinghorror.com/blog/archives/000589.html">code stink</a>&#8220;. You start thinking that it&#8217;s about time you reworked parts of your code. But you start to run through that wretched smell and although you are and were the awesome superstar&#8230;you got better. You have realized that you really did not know what you were doing when you wrote that piece of code.</p>
<p>I bring this up because it&#8217;s important. Your code will develop this stink. If it doesn&#8217;t, you should be concerned for your job as you are likely on your way out. ;D</p>
<p>Anyway, the point is that you have to figure out what you meant when you created this piece of junk so that you can make it better. This now puts you into the same situation as The Maintainer.</p>
<p><strong>Why It&#8217;s Important</strong><img class="alignright" title="Code Bug" src="http://farm3.static.flickr.com/2039/1703252007_24ce860838.jpg?v=0" alt="" width="304" height="190" /></p>
<p>Your documentation may help save the day. Not only will it save time and effort, but it will save a few hairs from quickly turning gray! Think of the hairs! When you document your code you are preparing any future readers for whatever it is that your code does. The main reason that documentation is so important is that it can help prevent bugs!</p>
<p>There have been many occasions where a decision was made to implement something a certain way because of a limitation or something else. Without commentary, anyone looking at that code without context might think to refactor it, but that could be detrimental to the functioning of the code.</p>
<p>Also, I am in a position where I review a good deal of code for quality so that we are doing things efficiently and effectively. I often have to ask what the purpose of some code is when a little notation would go a long way and save me from having to ask.</p>
<p><strong>Digest in Moderation</strong></p>
<p>Now, if you do no documenation, then get to it, but keep this in mind. As with anything, moderation is going to be your friend. Putting useless or obscur comments in your code can actually harm your effort. Find the balance. If something is not obvious by the code or you are unsure as to whether to comment, write a comment. Err on the side of caution. But, in all of this you need to make sure that you are writing useful documentation. Making a note about something that happens 15 lines down is fairly useless, but stating that the parameters should be a value of type X and will throw an exception otherwise is great.</p>
<p>Happy documenting!</p>
]]></content:encoded>
			<wfw:commentRss>http://digitaltumbleweed.com/2008/08/11/getting-it-done-write/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
