<?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>Blue Lightning Labs</title>
	
	<link>http://blog.bluelightninglabs.com</link>
	<description>Electrified iPhone Apps</description>
	<lastBuildDate>Fri, 30 Dec 2011 14:05:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/bluelightninglabs" /><feedburner:info uri="bluelightninglabs" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Suppressing Xcode Warnings On A Per File Basis</title>
		<link>http://feedproxy.google.com/~r/bluelightninglabs/~3/LWRzBva_0Us/</link>
		<comments>http://blog.bluelightninglabs.com/2011/12/suppressing-xcode-warnings-on-a-per-file-basis/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 14:05:48 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[iDevBlogADay]]></category>

		<guid isPermaLink="false">http://blog.bluelightninglabs.com/?p=70</guid>
		<description><![CDATA[I&#8217;m a fanatic about fixing warnings and errors in my code. Whenever I see one I tend to fix it right away which helps make it easy to see new ones when they pop up. However, there are occasions when you just can&#8217;t fix them. For instance, you might be using an open source bit [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a fanatic about fixing warnings and errors in my code. Whenever I see one I tend to fix it right away which helps make it easy to see new ones when they pop up. However, there are occasions when you just can&#8217;t fix them. For instance, you might be using an open source bit of code without the time, knowledge, or commit access to fix a warning. In such cases a lot of warnings in a foreign piece of code can make your own hard to find due to the deluge of yellow icons all over the place. Well, fear not. There is a way to turn off warnings on a per file basis in Xcode.</p>
<p>&nbsp;</p>
<p><img class="aligncenter size-full wp-image-71" title="" src="http://blog.bluelightninglabs.com/wp-content/uploads/2011/12/warnings.png" alt="" width="261" height="205" /></p>
<p>&nbsp;</p>
<p>Turning off warnings on a per file basis is super simple. All that is required is a compiler flag. Here&#8217;s the step by step process.</p>
<ol>
<ol>
<ol>
<li style="text-align: left;">Open the Project Navigator in Xcode</li>
<li style="text-align: left;">Click on the Project icon at the very top of the navigator</li>
<li style="text-align: left;">In the resulting detail pane select the target that you are working with</li>
<li style="text-align: left;">Select &#8220;Build Phases&#8221;</li>
<li style="text-align: left;">Expand &#8220;Compile Sources&#8221;</li>
<li style="text-align: left;">In the list locate the file that you&#8217;re interested in</li>
<li style="text-align: left;">Double click the column under the &#8220;Compiler Flags&#8221; column next to your file</li>
<li style="text-align: left;">Add a <strong>-w</strong> to the resulting dialog</li>
<li style="text-align: left;">Click &#8220;Done&#8221;</li>
<li style="text-align: left;">Build your now warnings free project</li>
</ol>
</ol>
</ol>
<div><a class="lightbox" title="compiler_flag" href="http://blog.bluelightninglabs.com/wp-content/uploads/2011/12/compiler_flag.png"><img class="aligncenter size-medium wp-image-72" title="compiler_flag" src="http://blog.bluelightninglabs.com/wp-content/uploads/2011/12/compiler_flag-300x130.png" alt="" width="300" height="130" /></a></div>
<p>Compiler Flags are extremely useful in certain situations. Not least among these is turning off ARC on a per file basis. To do so for a file simply add the <strong>-fno-objc-arc</strong> compiler flag.</p>
<p>Do note that suppressing warnings in your code base should be used judiciously. Be sure that you have a very good reason for doing so. With great power comes great responsibility.<a title="" href="http://blog.bluelightninglabs.com/wp-content/uploads/2011/12/compiler_flag.png"><br />
</a></p>
<p>&nbsp;</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%27Suppressing+Xcode+Warnings+On+A+Per+File+Basis%27+http%3A%2F%2Fbit.ly%2FsdywG7+%23iDevBlogADay" title="Post to Twitter"><img class="nothumb" src="http://blog.bluelightninglabs.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro4.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%27Suppressing+Xcode+Warnings+On+A+Per+File+Basis%27+http%3A%2F%2Fbit.ly%2FsdywG7+%23iDevBlogADay" title="Post to Twitter">Tweet This Post</a></p></div><img src="http://feeds.feedburner.com/~r/bluelightninglabs/~4/LWRzBva_0Us" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bluelightninglabs.com/2011/12/suppressing-xcode-warnings-on-a-per-file-basis/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.bluelightninglabs.com/2011/12/suppressing-xcode-warnings-on-a-per-file-basis/</feedburner:origLink></item>
		<item>
		<title>Best App Ever Awards</title>
		<link>http://feedproxy.google.com/~r/bluelightninglabs/~3/sBLwcWBRzeQ/</link>
		<comments>http://blog.bluelightninglabs.com/2011/12/best-app-ever-awards/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 22:41:40 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[AppStore]]></category>

		<guid isPermaLink="false">http://blog.bluelightninglabs.com/?p=67</guid>
		<description><![CDATA[It&#8217;s that time of year again when 148Apps and users select the Best App Ever. Mathemagics was a finalist in 2009. The app has improved tremendously since then and we&#8217;d love to make it to the top of the heap this time around. Below are a few categories that we have been nominated in. Click [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s that time of year again when 148Apps and users select the <a href="http://bestappever.com/nom/">Best App Ever</a>. Mathemagics was a finalist in 2009. The app has improved tremendously since then and we&#8217;d love to make it to the top of the heap this time around. Below are a few categories that we have been nominated in. Click one of the links to cast your vote for Mathemagics in one of the following categories.</p>
<p style="text-align: center;"><a href="http://bestappever.com/c/hsed/306586847">Best High School Student App</a></p>
<p style="text-align: center;"><a href="http://bestappever.com/c/cled/306586847">Best College Student App</a></p>
<p style="text-align: center;"><a href="http://bestappever.com/c/aded/306586847">Best Adult Education App</a></p>
<p style="text-align: center;">
<p>To vote simply click one of the links above and then click the big orange &#8220;Nominate this app&#8221; button on the resulting page. That&#8217;s it.</p>
<p><a href="http://blog.bluelightninglabs.com/wp-content/uploads/2011/12/arrows.png"><img class="aligncenter size-medium wp-image-68" title="arrows" src="http://blog.bluelightninglabs.com/wp-content/uploads/2011/12/arrows-300x149.png" alt="" width="300" height="149" /></a></p>
<p>Thanks for your vote of support!</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%27Best+App+Ever+Awards%27+http%3A%2F%2Fbit.ly%2Fw1TZMh+%23iDevBlogADay" title="Post to Twitter"><img class="nothumb" src="http://blog.bluelightninglabs.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro4.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%27Best+App+Ever+Awards%27+http%3A%2F%2Fbit.ly%2Fw1TZMh+%23iDevBlogADay" title="Post to Twitter">Tweet This Post</a></p></div><img src="http://feeds.feedburner.com/~r/bluelightninglabs/~4/sBLwcWBRzeQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bluelightninglabs.com/2011/12/best-app-ever-awards/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.bluelightninglabs.com/2011/12/best-app-ever-awards/</feedburner:origLink></item>
		<item>
		<title>Peer Reviews for the Solo Coder</title>
		<link>http://feedproxy.google.com/~r/bluelightninglabs/~3/ZMAuDsHk0H4/</link>
		<comments>http://blog.bluelightninglabs.com/2011/11/peer-reviews-for-the-solo-coder/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 13:00:30 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[iDevBlogADay]]></category>
		<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://blog.bluelightninglabs.com/?p=64</guid>
		<description><![CDATA[Developing software in a solo environment has its pros and cons. On the upside you have complete reign over the code base (no problems with ownership here), freedom to follow specific designs and an ability to express your creativity. On the other hand, the very nature of the activity can be your down fall; tunnel [...]]]></description>
			<content:encoded><![CDATA[<p>Developing software in a solo environment has its pros and cons. On the upside you have complete reign over the code base (no problems with ownership here), freedom to follow specific designs and an ability to express your creativity. On the other hand, the very nature of the activity can be your down fall; tunnel vision and shortsightedness can eclipse all of your efforts.</p>
<p>There is a way out of this quandary and its called peer review. The mere mention of &#8220;peer review&#8221; can strike fear and foreboding into the hearts of developers. But, like it or not, this <a href="http://www.codinghorror.com/blog/archives/000586.html">egoless programming</a> practice has the power to deliver.</p>
<p>Outside input can lead to an increase in production quality and ultimately product appeal. Here&#8217;s a few ways to get outside input and ideas if you&#8217;re flying solo:</p>
<ul>
<li><strong>Direct communication with friends.</strong> Friends that you&#8217;ve made through previous jobs, ventures, or virtual contacts made real are great sources of input. When in the same industry they can provide a unique perspective. If it has been a longtime since you&#8217;ve touched base then invite them out for lunch, or better yet a beer, in order to reconnect.</li>
<li><strong>End Users.</strong> The end users of your product are an extremely valuable source of feedback. While a user may not be privy to the nitty gritty code details they will have an opinion about what is good or bad about your interface. Running a public or private beta will give you the chance to gather valuable feedback and roll it into a product before going live with it. For iPhone development take a look at <a href="https://testflightapp.com">TestFlight</a> which is an awesome service for distributing beta builds and getting feedback from your test team.</li>
<li><strong>User groups.</strong> There is a good chance that there is a Cocoa developer group that meets regularly in your area. A few places to start would be <a href="http://cocoaheads.org/">CocoaHeads</a>, <a href="http://nscodernight.com/">NSCoder Night</a>, and if you&#8217;re in Austin <a href="http://www.cocoacoder.org">CocoaCoder</a>. Getting out and mingling with other developers is a great way to cultivate ideas, get feedback and make a few friends. Try giving a short presentation to the group on some code or a technique that you&#8217;ve been working on. Not only will this give the group a chance to discuss a topic but it can help you validate ideas or to open up new avenues of thought.</li>
<li><strong>Virtual community.</strong> Participation in online forums, email lists, IRC channels, and of course blogs can be another source of outside input. While readily available the quality of this sort of feedback can tend towards the inflammatory. Be sure to research your questions and always interact per the guidelines of your chosen group. Oh, and be sure to don your flame retardant suit before dipping your toes in.</li>
</ul>
<p>Whatever avenue you pursue to gain outside input it has the ability to not only improve on your own designs but to also increase your creativity. New ideas yield more new ideas and so on. So, if you&#8217;re feeling like you&#8217;ve hit a brick wall or that you need a second opinion try getting some outside input.</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%27Peer+Reviews+for+the+Solo+Coder%27+http%3A%2F%2Fbit.ly%2FuYdQ0r+%23iDevBlogADay" title="Post to Twitter"><img class="nothumb" src="http://blog.bluelightninglabs.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro4.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%27Peer+Reviews+for+the+Solo+Coder%27+http%3A%2F%2Fbit.ly%2FuYdQ0r+%23iDevBlogADay" title="Post to Twitter">Tweet This Post</a></p></div><img src="http://feeds.feedburner.com/~r/bluelightninglabs/~4/ZMAuDsHk0H4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bluelightninglabs.com/2011/11/peer-reviews-for-the-solo-coder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.bluelightninglabs.com/2011/11/peer-reviews-for-the-solo-coder/</feedburner:origLink></item>
		<item>
		<title>Breakfast of Champions</title>
		<link>http://feedproxy.google.com/~r/bluelightninglabs/~3/TxxAuCCzB2I/</link>
		<comments>http://blog.bluelightninglabs.com/2011/10/breakfast-of-champions/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 14:00:17 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[iDevBlogADay]]></category>
		<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://blog.bluelightninglabs.com/?p=63</guid>
		<description><![CDATA[There used to be a senior exec in a company that I worked for who liked to say, &#8220;Feedback is the breakfast of champions&#8221;. Visuals from a literal translation of that Ken Blanchard quote aside, it has the power to transform anything. Feedback, in all of its forms, is often a tough serving to consume [...]]]></description>
			<content:encoded><![CDATA[<p>There used to be a senior exec in a company that I worked for who liked to say, &#8220;Feedback is the breakfast of champions&#8221;. Visuals from a literal translation of that Ken Blanchard quote aside, it has the power to transform anything. Feedback, in all of its forms, is often a tough serving to consume but a good helping of the right sort can push you beyond current limits and plateaus.</p>
<h4>The Good,</h4>
<p>When I think of that quote I imagine what kind of feedback the exec was talking about. For me it meant feedback from peers and end users. Depending on the crowd that you hang out with it can actually be quite difficult to get good constructive criticism. I know, I know, what you&#8217;re thinking. This guy is <em>asking</em> for it? Yea, as long as it contains that operative word <em>constructive</em> and is meant with sincerity. Feedback is often the only way for you to see beyond your own narrow view of the world. Think of the Truman Show. Here you have this guy who has known nothing else but a little island for his entire life. Then little by little he starts to notice inconsistencies which make him think about the world around him. Had those quirks never happened or had he failed to notice them he would still be sitting there on his TV show. Feedback is the express train to realization.</p>
<p>Constructive criticism coming from your peers can take you to new levels of your craft. Of course, it&#8217;s up to you to decide if any one piece of feedback takes you in the direction you want to go as a developer, individual, astronaut, or whatever. This requires some introspection on your part. Developing a bit of a rhinoceros skin and a good humor about yourself also helps to digest the horse pill that can be peer feedback. However, the best peer feedback is often of the positive persuasion. A simple, &#8220;Good job&#8221; or &#8220;Man, that&#8217;s great&#8221; can do wonders to spur someone on in their current direction.</p>
<p>Assuming that you&#8217;re a software developer/publisher, you can have feedback from end users. Feedback of this sort can put greenbacks in your pocket book. When a user emails to notify you that there is a UI bug or that they don&#8217;t understand the usage of some feature it is your clue that something may be up. The same or similar item coming from two, three, or even more people should start to perk up your spider senses to a potential improvement in a design or work flow. Again, introspection is the order of the day when deciding if a request or issue falls along the direction and intent of your particular flavor of software.</p>
<h4>the Bad,</h4>
<p>Being the bearer of feedback can be just as tough as receiving it. That is, if your intent is to be constructive (and I hope that it is). Simply blurting out your observation of flaws comes across as strictly criticism and that&#8217;s bad. Instead, hold back the thought for a bit and think of ways to improve on the subject at hand. I mean, you see a flaw so you must have an idea of how things could be better. Right? Reverse roles with the person and think about how you would want to hear the news that you are about to deliver. Finally, provide your critique along with a suggestion on how to improve. Running through this sequence becomes second nature once practiced for a while. Some people will do it naturally and don&#8217;t even think about it. Others need a process to follow. Some characteristics of good feedback include:</p>
<ul>
<li>Transfer of information rather than the giving of advise</li>
<li>Covers a specific issue rather than a general one</li>
<li>Focuses on the content rather than the person</li>
<li>Offered with empathy</li>
</ul>
<p>Just as bad as not being able to take feedback is never giving it. Floating merrily along accepting the status quo lies in a direct line towards failure. Yours or someone else&#8217;s. It could take years or even decades to materialize but sooner or later such a static nature will break down. Often an unwillingness to provide feedback is really masking a desire to avoid receiving it. If that&#8217;s you then start small. Give yourself time to develop the skills of giving and receiving feedback. I think you&#8217;ll be better for it in the long run.</p>
<h4>and the Ugly</h4>
<p>Trolls and flame warriors need not apply. We all know the type of inflammatory feedback that a supposedly anonymous internet can elicit. There is something about the feeling of anonymity that can draw out some of the more basal aspects of human nature. In short, there is little you can do but surround yourself with as many upstanding people as possible and simply ignore the occasional flame. Responding to outright deleterious comments or feedback usually only fans the flames and invites more of the same. Use that rhinoceros skin and good humor to the best of your ability and ignore it.</p>
<h4>That&#8217;s a wrap</h4>
<p>There you have it. The good, the bad, and the ugly of feedback. Sometimes it takes stepping outside of yourself in order to see the larger picture but feedback is a great way to grow an idea, a product, or yourself.</p>
<p>Feedback. It&#8217;s not just for breakfast anymore.</p>
<hr />
<p><span style="color: #c0c0c0;"><em>Note: This is a repost from my personal blog at http://shanecrawford.org</em></span></p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%27Breakfast+of+Champions%27+http%3A%2F%2Fbit.ly%2Frlor3T+%23iDevBlogADay" title="Post to Twitter"><img class="nothumb" src="http://blog.bluelightninglabs.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro4.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%27Breakfast+of+Champions%27+http%3A%2F%2Fbit.ly%2Frlor3T+%23iDevBlogADay" title="Post to Twitter">Tweet This Post</a></p></div><img src="http://feeds.feedburner.com/~r/bluelightninglabs/~4/TxxAuCCzB2I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bluelightninglabs.com/2011/10/breakfast-of-champions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.bluelightninglabs.com/2011/10/breakfast-of-champions/</feedburner:origLink></item>
		<item>
		<title>Steve</title>
		<link>http://feedproxy.google.com/~r/bluelightninglabs/~3/DpP5RwjLus8/</link>
		<comments>http://blog.bluelightninglabs.com/2011/10/steve/#comments</comments>
		<pubDate>Thu, 06 Oct 2011 02:54:55 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://blog.bluelightninglabs.com/?p=59</guid>
		<description><![CDATA[Visionary. Creative Genius. Rebel. Human Being. &#160; Thanks Steve. Tweet This Post]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><img class="aligncenter size-full wp-image-61" title="" src="http://blog.bluelightninglabs.com/wp-content/uploads/2011/10/steve.png" alt="" width="600" height="440" /></p>
<p style="text-align: center;">Visionary.</p>
<p style="text-align: center;">Creative Genius.</p>
<p style="text-align: center;">Rebel.</p>
<p style="text-align: center;">Human Being.</p>
<p>&nbsp;</p>
<p style="text-align: center;">Thanks Steve.</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%27Steve%27+http%3A%2F%2Fbit.ly%2Fn5GVx0+%23iDevBlogADay" title="Post to Twitter"><img class="nothumb" src="http://blog.bluelightninglabs.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro4.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%27Steve%27+http%3A%2F%2Fbit.ly%2Fn5GVx0+%23iDevBlogADay" title="Post to Twitter">Tweet This Post</a></p></div><img src="http://feeds.feedburner.com/~r/bluelightninglabs/~4/DpP5RwjLus8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bluelightninglabs.com/2011/10/steve/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.bluelightninglabs.com/2011/10/steve/</feedburner:origLink></item>
		<item>
		<title>Kaizen (改善)</title>
		<link>http://feedproxy.google.com/~r/bluelightninglabs/~3/F2AZoNA1xes/</link>
		<comments>http://blog.bluelightninglabs.com/2011/09/kaizen/#comments</comments>
		<pubDate>Fri, 09 Sep 2011 13:00:51 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[iDevBlogADay]]></category>
		<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://blog.bluelightninglabs.com/?p=51</guid>
		<description><![CDATA[Did you make a small improvement in some area of your apps today? Your design? Your business? Practice Kaizen and you would have. Kaizen is a Japanese philosophy for continuous improvement which has been applied to fields as varied as manufacturing and game development. While the philosophy includes making changes and adjusting based on their [...]]]></description>
			<content:encoded><![CDATA[<p>Did you make a small improvement in some area of your apps today? Your design? Your business? Practice Kaizen and you would have. Kaizen is a Japanese philosophy for continuous improvement which has been applied to fields as varied as manufacturing and game development. While the philosophy includes making changes and adjusting based on their outcome one of the more useful aspects is improvement by continually making small changes.</p>
<p>Toyota famously uses this technique to increase manufacturing efficiency and productivity. Every worker is empowered to stop their production line suggest an improvement and work it into their larger process. They have formalized the process and made it a part of their corporate culture. Small changes made continually have led to a power house of manufacturing.</p>
<p>I think that Apple also uses a form of Kaizen. We all know that Apple makes incredible products and is known for innovation. But, they are not always first to market. Nor are many of their products initially released with the ultimate feature set. They have an innate knack for launching a product with the <em>right</em> feature set and then rapidly and continually improving it over time. All informed by a philosophy of simplicity and elegance. In fact, they are relentless about improvement even to the point of radically changing established and accepted products. Remember the very first iPod? It was a clunky device by todays standards. It also wasn&#8217;t the first nor the best digital music player of its day. But, it soon became the dominating music player as a result of relentlessly improving the device.</p>
<p>It&#8217;s amazing how quickly a group of small changes can result in a large one. By continually making small improvements you can quickly outpace competitors, increase end user satisfaction and create a product that is established in its niche. This technique is especially powerful when used by small teams or solo developers who can move nimbly but lack the resources of a larger outfit. Be relentless in your small but continual improvements and others will wonder how you get so much done. One brick at a time, that&#8217;s how. Add the philosophy of Kaizen to your mindset and make at least a small improvement in your app or business each and every day. Down the road you&#8217;ll be glad you did.</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%27Kaizen+%28%E6%94%B9%E5%96%84%29%27+http%3A%2F%2Fbit.ly%2FoBKbkM+%23iDevBlogADay" title="Post to Twitter"><img class="nothumb" src="http://blog.bluelightninglabs.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro4.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%27Kaizen+%28%E6%94%B9%E5%96%84%29%27+http%3A%2F%2Fbit.ly%2FoBKbkM+%23iDevBlogADay" title="Post to Twitter">Tweet This Post</a></p></div><img src="http://feeds.feedburner.com/~r/bluelightninglabs/~4/F2AZoNA1xes" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bluelightninglabs.com/2011/09/kaizen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.bluelightninglabs.com/2011/09/kaizen/</feedburner:origLink></item>
		<item>
		<title>Developing From Multiple Machines</title>
		<link>http://feedproxy.google.com/~r/bluelightninglabs/~3/_IafG-J2z-Y/</link>
		<comments>http://blog.bluelightninglabs.com/2011/08/developing-from-multiple-machines/#comments</comments>
		<pubDate>Fri, 26 Aug 2011 14:20:39 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[iDevBlogADay]]></category>

		<guid isPermaLink="false">http://blog.bluelightninglabs.com/?p=53</guid>
		<description><![CDATA[When I'm ready to head out of the office for a while that last thing that I want is to worry about setting up my dev environment. I just want to grab the laptop and sprint out the door.]]></description>
			<content:encoded><![CDATA[<p>There has been <a href="http://tweetlibrary.com/shanezilla/multiplemachinedev">some discussion</a> recently on Twitter regarding developing from multiple machines. I work this way and it can be liberating. While in the office I typically work from a Mac Pro with a 27&#8243; display. Ah, screen real-estate. But, I like to be mobile so I also work from a 15&#8243; Mac Book Pro. When I&#8217;m ready to head out of the office for a while the last thing that I want is to worry about setting up my dev environment. I just want to grab the laptop and sprint out the door. Likewise when I return I want everything ready to go on the desktop. Keeping development environments synced between the two can be a real pain. That is unless you make use of &#8220;the cloud&#8221;.</p>
<p>&nbsp;</p>
<div id="attachment_54" class="wp-caption aligncenter" style="width: 310px"><a class="lightbox" title="IMG_9457" href="http://blog.bluelightninglabs.com/wp-content/uploads/2011/08/IMG_9457.jpg"><img class="size-medium wp-image-54" title="IMG_9457" src="http://blog.bluelightninglabs.com/wp-content/uploads/2011/08/IMG_9457-300x200.jpg" alt="My office setup." width="300" height="200" /></a><p class="wp-caption-text">HQ</p></div>
<p>&nbsp;</p>
<p>I can hear you asking, &#8220;Isn&#8217;t this what version control systems are for?&#8221;. Yes. I am a big fan of version control and have used numerous systems over the years. Currently I use Git. I love the fact that I don&#8217;t need to be connected in order to work against the repo like I do with Subversion or Perforce. In addition, I think that the self contained nature of Git lends itself to this type of setup. I&#8217;m not so sure that a system like Perforce would fair so well. In a team environment version control is a no questions asked must have. In fact you should always use version control, even if you work solo like I do.</p>
<p>However, in order to keep everything in sync between machines I use Dropbox. Everything goes into the Dropbox folder. Source code, assets, Git repos, project files. The whole enchilada. Everything except for build directories which are regenerated with a simple build. The size of your project, especially assets, can be an issue when syncing over a slow network so keep that in mind. Fortunately, if both machines are on the same network then Dropbox will detect it and use the <a href="http://www.dropbox.com/help/137">LAN Sync</a> feature which will sync files over your local network vs the cloud. Unless you don&#8217;t have much code or you have managed to max out your referrals with Dropbox you&#8217;ll probably need to spring for one of the paid plans. Typically I like to keep all of my projects under a single top level directory. But, I like to keep that directory in my user space. As such I had a major aversion to moving everything over to the Dropbox folder. A simple symlink from the Dropbox folder to my preferred space solved that issue.</p>
<p>I&#8217;ve run into two caveats with this rather simplistic setup. First is not to have the same project open under Xcode at the same time on different machines. Otherwise strange and potentially harmful behaviors can and do occur. This means that when I leave the house I need to be sure that Xcode on the desktop is shutdown and vice versa. A small but important point. Second, remember that everything is synced immediately all of the time. So, if I&#8217;m working on a large Photoshop file, for example, from a coffee shop with a slow connection this could be an issue (especially with a severe <img src="http://km.support.apple.com/library/APPLE/APPLECARE_ALLGEOS/HT1343/ks_command.gif" alt="" width="9" height="9" />-S habit). In such a case I might temporarily turn off Dropbox syncing until I can get to a faster network or back to HQ. Not ideal but I&#8217;m usually working on source files which sync quickly. If you desire more control over what is synced and when then this <a href="http://stackoverflow.com/questions/1960799/using-gitdropbox-together-effectively">Stackoverflow post</a> outlines a way to use Dropbox as a Git bare repo rather than just going all in on the syncing fire hose. Additionally, you may want to disable Growl notifications for Dropbox since they can get annoying after a while. There have also been some <a href="http://techcrunch.com/2011/06/20/dropbox-security-bug-made-passwords-optional-for-four-hours/">recent</a> <a href="http://blog.dropbox.com/?p=821">security</a> <a href="http://www.tuaw.com/2011/04/19/dropbox-under-fire-for-security-concerns/">concerns</a> with Dropbox. I suppose that your level of trust in them and your comfort level with others potentially seeing your code will dictate whether or not you use a setup like this. For me the benefits outweigh the downside.</p>
<p>Even with a great automatic code syncing environment in the cloud you shouldn&#8217;t rely on it as your sole source of backup. Keep using your version control systems hopefully hosting offsite somewhere. I also use the great online backup utility <a href="http://www.haystacksoftware.com/arq">Arq</a> to regularly backup my important files including my development environment. In addition, I periodically create a sparse image of my entire hard drive using <a href="http://www.shirt-pocket.com">SuperDuper</a>. That&#8217;s at least four copies of my code three of which are offsite. There is also a copy on my alternate machine ready to go. I sleep pretty well at night.</p>
<p>Xcode 4 has brought major changes but one of my favorites are the built in code snippets (maybe I&#8217;ll share mine sometime). However, there is no built in way to sync them between machines which can be frustrating and a major hassle when using a setup like this one. If you run into this then <a href="https://github.com/lukeredpath/xcodesnippets">xcodesnippets</a> is for you. It&#8217;s a simple ruby gem which packages up and organizes your snippets for easy transport to other machines. Unfortunately, there is no online syncing built in so you need to copy the snippet bundles over manually but otherwise it works great. It does seem however that using the magic of symlinks and Dropbox you might be able to setup some auto syncing of snippets even without such a tool. If you try this then please let us know how it works out.</p>
<p>I love the ability to run out the door with my laptop in hand without having to worry about having everything ready to go. It is. Likewise when I&#8217;m in the office I love being able to fire up Xcode on the Mac Pro and get to work immediately. As developers we spend all day in our environment and as such it is a very personal thing. So, this type of a setup may or may not work for you. Whichever the case please share your experiences and what works in your world.</p>
<p>Happy coding.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%27Developing+From+Multiple+Machines%27+http%3A%2F%2Fbit.ly%2Fnu25eB+%23iDevBlogADay" title="Post to Twitter"><img class="nothumb" src="http://blog.bluelightninglabs.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro4.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%27Developing+From+Multiple+Machines%27+http%3A%2F%2Fbit.ly%2Fnu25eB+%23iDevBlogADay" title="Post to Twitter">Tweet This Post</a></p></div><img src="http://feeds.feedburner.com/~r/bluelightninglabs/~4/_IafG-J2z-Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bluelightninglabs.com/2011/08/developing-from-multiple-machines/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.bluelightninglabs.com/2011/08/developing-from-multiple-machines/</feedburner:origLink></item>
		<item>
		<title>Zen Vid</title>
		<link>http://feedproxy.google.com/~r/bluelightninglabs/~3/T1U7aoChDbk/</link>
		<comments>http://blog.bluelightninglabs.com/2011/03/zen-videos/#comments</comments>
		<pubDate>Sun, 20 Mar 2011 23:55:25 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[iDevBlogADay]]></category>
		<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://blog.bluelightninglabs.com/?p=49</guid>
		<description><![CDATA[Occasionally I run across some video out on the web which peaks an interest that seems to draw a line back towards my indie development efforts. They may be directly related to some technical topic or more often than not totally off the beaten path. I&#8217;m going to link to a few of them here [...]]]></description>
			<content:encoded><![CDATA[<p>Occasionally I run across some video out on the web which peaks an interest that seems to draw a line back towards my indie development efforts. They may be directly related to some technical topic or more often than not totally off the beaten path. I&#8217;m going to link to a few of them here in the hopes that they spark something in you. May they help to provide a guiding light down the path to Indiedom.</p>
<ul style="padding-left: 30px;">
<li> <a href="http://www.archive.org/details/BruceLeeTheLostInterview1971">Bruce Lee the Lost Interview</a></li>
</ul>
<p style="padding-left: 60px;">First, Bruce F&#8217;n Lee!! Bruce comes off as very inward focused and zen-like. Inspiration for being flexible as an indie developer. Be water my friend.</p>
<ul style="padding-left: 30px;">
<li><a href="http://www.ted.com/talks/lang/eng/elizabeth_gilbert_on_genius.html">Elizabeth Gilbert: Nurturing Creativity</a></li>
</ul>
<p style="padding-left: 60px;">All of us have Genius. Don&#8217;t be afraid to find and expose yours. Sometimes its hard to let your creation show for fear of &#8220;feedback&#8221;. Push on through and let your creativity shine.</p>
<ul style="padding-left: 30px;">
<li><a href="http://lifehacker.com/#!5783424/avoid-idea-plateaus-with-a-plan">Avoid Idea Plateaus</a></li>
</ul>
<p style="padding-left: 60px;">Avoid the inevitable doldrums that follow the high you feel after coming up with a new idea. Stop dreaming and start doing.</p>
<ul style="padding-left: 30px;">
<li><a href="http://www.viddler.com/explore/rentzsch/videos/4/">Monster Marketing</a></li>
</ul>
<p style="padding-left: 60px;">Classic guerrilla marketing techniques from the godfather of the delicious generation.</p>
<ul style="padding-left: 30px;">
<li><a href="http://www.youtube.com/watch?v=u6XAPnuFjJc">The surprising truth about what motivates us</a></li>
</ul>
<p style="padding-left: 60px;">Very cool and inspirational animated talk about the underpinnings behind what motivates us. Good to keep in mind when you find yourself lacking motivation.</p>
<p>Just a few videos that I&#8217;ve found inspirational and I hope you like them too. This is my last blog post for iDevBlogADay for a while. I&#8217;ll be falling back to the end of the rotation and the next dev with great stuff to write will be filling this slot the next time around. However, I hope that you subscribe to the RSS feed and hang around since I&#8217;ll still be posting about an awesome new project that I&#8217;m just starting.</p>
<p style="padding-left: 90px;">
<hr style="padding-left: 30px;" />
<p style="padding-left: 30px;">This post is a part of the <a href="http://idevblogaday.com/">iDevBlogADay</a> group of Indie development blogs. Thanks to <a href="http://twitter.com/mysterycoconut">@mysterycoconut</a> for managing such a great site.</p>
<p style="padding-left: 30px;">
<p style="padding-left: 60px;">
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%27Zen+Vid%27+http%3A%2F%2Fbit.ly%2FgFVX5G+%23iDevBlogADay" title="Post to Twitter"><img class="nothumb" src="http://blog.bluelightninglabs.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro4.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%27Zen+Vid%27+http%3A%2F%2Fbit.ly%2FgFVX5G+%23iDevBlogADay" title="Post to Twitter">Tweet This Post</a></p></div><img src="http://feeds.feedburner.com/~r/bluelightninglabs/~4/T1U7aoChDbk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bluelightninglabs.com/2011/03/zen-videos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.bluelightninglabs.com/2011/03/zen-videos/</feedburner:origLink></item>
		<item>
		<title>A Busman’s Holiday</title>
		<link>http://feedproxy.google.com/~r/bluelightninglabs/~3/aFglKA54iFc/</link>
		<comments>http://blog.bluelightninglabs.com/2011/03/a-busmans-holiday/#comments</comments>
		<pubDate>Sun, 06 Mar 2011 16:00:01 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[iDevBlogADay]]></category>
		<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://blog.bluelightninglabs.com/?p=46</guid>
		<description><![CDATA[Being an Indie developer means that you can be somewhat of a Bedouin traveling about the countryside laptop in hand. A fast internet connection, a power outlet, and my laptop are all that I really require to be productive.]]></description>
			<content:encoded><![CDATA[<p>A few days ago we returned from a week long working vacation down to the coast. This wasn&#8217;t a visit to a client site or a trip to an extension office. It was more of a re-location of current activities. A <a href="http://www.urbandictionary.com/define.php?term=busmans%20holiday">Busman&#8217;s Holiday</a>. Our days were filled with long walks on the beach, trying out the local restaurants and working on special projects. That&#8217;s right, working, on vacation.</p>
<p>Being an Indie developer means that you can be somewhat of a <a href="http://www.answers.com/topic/bedouin">Bedouin</a><sup>1</sup> traveling about the countryside laptop in hand. A fast internet connection, a power outlet, and my laptop are all that I really require to be productive. Well, almost. A supportive spouse who has a similar mindset is critical. For the third year in a row now we&#8217;ve made this trip down to a sleepy fishing town on the coast and each year great things come from it.</p>
<p>There&#8217;s one rule to a Busman&#8217;s Holiday. Don&#8217;t work exclusively on  existing projects. Pick something new that you&#8217;ve been wanting to  explore or start something that you&#8217;ve been wanting to get to. Working  on a fun special project multiplies the creative effects of your work  and can take you to truly undiscovered territory. In fact, my primary  product, Mathemagics, started out this way on a trip a couple of years  ago. Last year saw the brainstorm and start of another successful <a href="http://pickinchickenapp.com/">project</a>. And this recent trip was no different in setting the tone for the rest of my year as an Indie.</p>
<p>Have you ever woken up in the middle of the night with the solution to a problem as if your mind was working while you were asleep? Or had a great idea while in the shower? I think this happens because in those situations our minds are closer to a state of relaxation. Stress of day-to-day activities fades away and opens the pathways our brains need to make the leaps of thought that manifest themselves as creativity. A Busman&#8217;s Holiday is like that. Removed from your daily work environment and nestled in a relaxing setting the ideas begin to flow and hyper productivity sets in.</p>
<p>So, if you have the means then you might want to take a Busman&#8217;s Holiday. Pick a relaxing spot somewhere near where you live, set the expectations for the family that this is just work but somewhere else and go for it. Step outside of your normal daily activities and temporarily relocate to your creative zone.</p>
<hr />1. If you are in or near Austin Texas then you can get a weekly dose of nomadic life by attending <a href="http://cafebedouins.com/">Cafe Bedouins</a> on Tuesdays.</p>
<hr />This post is a part of the <a href="http://idevblogaday.com/">iDevBlogADay</a> group of Indie development blogs. Thanks to <a href="http://twitter.com/mysterycoconut">@mysterycoconut</a> for managing such a great site.</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%27A+Busman%E2%80%99s+Holiday%27+http%3A%2F%2Fbit.ly%2FenzQpq+%23iDevBlogADay" title="Post to Twitter"><img class="nothumb" src="http://blog.bluelightninglabs.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro4.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%27A+Busman%E2%80%99s+Holiday%27+http%3A%2F%2Fbit.ly%2FenzQpq+%23iDevBlogADay" title="Post to Twitter">Tweet This Post</a></p></div><img src="http://feeds.feedburner.com/~r/bluelightninglabs/~4/aFglKA54iFc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bluelightninglabs.com/2011/03/a-busmans-holiday/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.bluelightninglabs.com/2011/03/a-busmans-holiday/</feedburner:origLink></item>
		<item>
		<title>Command Line Fu (Part 2)</title>
		<link>http://feedproxy.google.com/~r/bluelightninglabs/~3/GrjlBYvRyso/</link>
		<comments>http://blog.bluelightninglabs.com/2011/02/command-line-fu-part-2/#comments</comments>
		<pubDate>Sun, 20 Feb 2011 16:00:03 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[iDevBlogADay]]></category>

		<guid isPermaLink="false">http://blog.bluelightninglabs.com/?p=43</guid>
		<description><![CDATA[...The powerful ssh command can help tame your network of servers so that you can spend a little extra time with friends and family. Most people think of ssh as a secure telnet (remember telnet?) but it's oh so much more than that...]]></description>
			<content:encoded><![CDATA[<p>This, part deux, continues <a href="http://blog.bluelightninglabs.com/2011/02/command-line-fu-part-1/">part 1</a> of Command Line Fu.</p>
<h3>Do This Over There</h3>
<p>Spinning up and running a server somewhere on the internet is extremely easy these days. From Amazon EC2 to Slicehost having a remote machine running 24/7 is well within the reach of most devs. It also makes system administrators out of us. The powerful ssh command can help tame your network of servers so that you can spend a little extra time with friends and family. Most people think of ssh as a secure telnet (remember telnet?) but it&#8217;s oh so much more than that.</p>
<p>One of my favorite uses of ssh is in remotely executing commands. Here&#8217;s what one looks like:</p>
<p><code>$&gt;ssh username@myserver.com 'apachectl -k restart'</code></p>
<p>That&#8217;s it. Simply put your command in quotes at the end of the ssh command line. The command is executed from your local machine but runs on the destination server. String 10 of those together in a script and you can restart your entire web server farm from your local machine by executing a single script. The ease and automatic nature of this hinges on setting up ssh for <a href="http://www.ubuntu-howto.info/howto/how-to-connect-with-ssh-without-using-a-password">auto login</a>.</p>
<p>You can take it to the next level by combining scp with ssh remote command execution. Consider having a stable of scripts that help you manage your servers all kept centrally on your local machine. When the need arises scp one of them over to the target machine and then use ssh to remotely execute it. Keeping all of those scripts locally reduces admin headaches by having copies distributed all over the place.</p>
<p>As an added bonus you can use ssh to securely tunnel out of wherever you happen to be. For example, you find yourself sitting in a strange coffee shop wanting to check your email without having to worry (note pop3 sends your email password in plaintext every single time it checks for new mail). You can easily divert your email over a secure connection so that anyone that happens to be monitoring network traffic doesn&#8217;t see your secrets.</p>
<p><code>$&gt;ssh -f username@myserver.com -L 2000:mailhost.com:110 -N</code></p>
<p>The -f argument backgrounds ssh, username@myserver.com is your username at your servers hostname, -N tells ssh to <em>not</em> try executing this as a command on the remote machine. The -L argument is where the magic happens. In the args to -L 2000 is the port on your local machine, mailhost.com is your mail servers host name, and 110 is the port on the remote mail server machine. Now simply switch your email client to connect to localhost on port 2000 as your mail server. Now all of your email traffic for that account is secure from the point of your localhost to your server (your server forwards the request out to the real server from there). This technique works with just about any ports that you want to tunnel using your server as a middle man.</p>
<h3>Interactive History</h3>
<p>After working at the command line for any length of time you invariably need to re-execute some command again. You can either re-type it, often tedious, scroll through previous commands, takes forever, or you can search for it and just hit enter. Searching the command history is easy. Just hit CTRL-R at the prompt and start typing any part of the command. Search results will pop up:</p>
<p><code>(reverse-i-search)`sq': sqlite3 db/data.sqlite3</code></p>
<p>From this point you can hit <em>Enter</em> to execute the command or <em>Right Arrow</em> to put the command at the prompt so that you can edit it. If you have many similar results then you can continue hitting CTRL-R once you have a result to cycle through all matches.</p>
<h3>Bashing History</h3>
<p>Searching with interactive command history is handy. But, we can take it to a whole other level. Bash allows you to refer to previous commands and arguments withing those commands via a simple shorthand. Once you grok the shorthand you&#8217;ll be zipping through previous commands.</p>
<p><code>$&gt;apt-get install git<br />
Permission denied<br />
$&gt; sudo !!<br />
sudo apt-get install git<br />
Reading package lists... Done</code></p>
<p>The &#8220;!!&#8221; refers to the previous command in the history. So, executing &#8220;sudo !!&#8221; puts sudo in front that previous command. How many times have you executed a command only to re-execute it as sudo? Now it&#8217;s easy to do, eh? Here are some more variations to refer to previous commands:</p>
<p><code>!-2            # Refer to the command 2 back in the history (!-3, !-4, etc)<br />
!find          # Previous command that starts with 'find'<br />
!?find?       # Previous command that contains 'find'<br />
!! -la         # Previous command adding -la as an argument<br />
!!:1           # Refers to the first argument of the last command<br />
!!:3-5        # Refers to arguments 3, 4, and 5 of the previous command<br />
!!:0                     # Refers to the command (no arguments)<br />
!!:-2                  # Refers to the command and the first two arguments</code></p>
<p>As you can see there is a lot of power there in referring to the previous command and arguments. Say, for example, you&#8217;re creating a tar file and realize that you have added an unwanted file (file2).</p>
<p><code>$&gt; tar -xvf backup.tar file1 file2 file3 file4 file5<br />
-- Ooops. Didn't want 'file2' in the list --<br />
$&gt;!!:-3 !!:5-7<br />
tar -cvf backup.tar file1 file3 file4 file5<br />
a file1<br />
a file3<br />
a file4<br />
a file5<br />
</code></p>
<p>By using a simple shorthand the previous command was quickly executed sans the undesired argument. With a little practice this speedy but somewhat cryptic command structure becomes second nature.</p>
<p>So there you have it. My list of Master Command Line Fu tricks. Study them. Practice them. Before you know it you&#8217;ll pick that rabbit out of the hat while everybody sits out there wondering how the hell you did it.<sup>1</sup></p>
<hr />1. <a href="http://www.imdb.com/title/tt0094291/quotes?qt0393927">Gordon Gekko</a>: &#8220;The richest one percent of this country owns half our country&#8217;s wealth, five trillion dollars. One third of that comes from hard work, two thirds comes from inheritance, interest on interest accumulating to widows and idiot sons and what I do, stock and real estate speculation. It&#8217;s bullshit. You got ninety percent of the American public out there with little or no net worth. I create nothing. I own. We make the rules, pal. The news, war, peace, famine, upheaval, the price per paper clip. <strong>We pick that rabbit out of the hat while everybody sits out there wondering how the hell we did it.</strong> Now you&#8217;re not naive enough to think we&#8217;re living in a democracy, are you buddy? It&#8217;s the free market. And you&#8217;re a part of it. You&#8217;ve got that killer instinct. Stick around pal, I&#8217;ve still got a lot to teach you. &#8221;</p>
<hr />This post is a part of the <a href="http://idevblogaday.com/">iDevBlogADay</a> group of Indie development blogs. Thanks to <a href="http://twitter.com/mysterycoconut">@mysterycoconut</a> for managing such a great site.</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%27Command+Line+Fu+%28Part+2%29%27+http%3A%2F%2Fbit.ly%2FfB0Hgx+%23iDevBlogADay" title="Post to Twitter"><img class="nothumb" src="http://blog.bluelightninglabs.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro4.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%27Command+Line+Fu+%28Part+2%29%27+http%3A%2F%2Fbit.ly%2FfB0Hgx+%23iDevBlogADay" title="Post to Twitter">Tweet This Post</a></p></div><img src="http://feeds.feedburner.com/~r/bluelightninglabs/~4/GrjlBYvRyso" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bluelightninglabs.com/2011/02/command-line-fu-part-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.bluelightninglabs.com/2011/02/command-line-fu-part-2/</feedburner:origLink></item>
	</channel>
</rss><!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Served from: blog.bluelightninglabs.com @ 2012-02-20 22:37:15 -->

