<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ryan Rauh&#039;s Blog</title>
	<atom:link href="http://lostechies.com/ryanrauh/feed/" rel="self" type="application/rss+xml" />
	<link>http://lostechies.com/ryanrauh</link>
	<description>Just another LosTechies site</description>
	<lastBuildDate>Mon, 30 Apr 2012 14:40:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
		<item>
		<title>Huboard &#8211; New feature overview</title>
		<link>http://lostechies.com/ryanrauh/2012/04/28/huboard-new-feature-overview/</link>
		<comments>http://lostechies.com/ryanrauh/2012/04/28/huboard-new-feature-overview/#comments</comments>
		<pubDate>Sat, 28 Apr 2012 17:14:52 +0000</pubDate>
		<dc:creator>Ryan Rauh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[huboard]]></category>

		<guid isPermaLink="false">http://lostechies.com/ryanrauh/?p=152</guid>
		<description><![CDATA[Huboard! I&#8217;ve been working one a few new features in my side project huboard and they are pretty awesome. Since the start I&#8217;ve always prioritized features by what adds the most value to github issues. That means features github already&#160;&#8230; <a href="http://lostechies.com/ryanrauh/2012/04/28/huboard-new-feature-overview/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h1> Huboard! </h1>
<p>I&#8217;ve been working one a few new features in my side project <a href="http://huboard.com">huboard</a><br />
and they are pretty awesome. </p>
<p>Since the start I&#8217;ve always prioritized features by what  <strong>adds</strong> the most value to github issues. That means features github already provides are much lower in priority, which is why you still can&#8217;t add issues from huboard. Eventually I will add it, but github already provides that functionality or you could use other tools <code>gem install ghi</code>. Even more importantly huboard is <a href="https://github.com/rauhryan/huboard">open source</a>, I would love it if someone would fork it and add those features.</p>
<p>So what&#8217;s new in huboard that github doesn&#8217;t provide?</p>
<h3> Milestone ordering </h3>
<p>Huboard provides the ability to prioritize your milestones using a more macro oriented manager pants view. </p>
<p><img style="max-width: 100%;"  src="http://f.cl.ly/items/3k0S3A1v1B3q3o1F0e0n/milestones.jpg" alt="milestone ordering" /></p>
<p>From here you can happily drag your milestones into the desired order</p>
<p><img style="max-width: 100%;" src="http://f.cl.ly/items/0y2T3N3E0X1r1I441W1M/huboard____Huboard-20120428-113911.jpg" alt="view milestones" /></p>
<h3> Issue ordering </h3>
<p>Huboard provides the same ordering ability for issues.</p>
<p><img style="max-width: 100%;"  src="http://f.cl.ly/items/2y1G05131U2z2w190H21/milestones2.jpg" alt="view issues" /></p>
<p>Notice how issue #23 is between #31 and #35 </p>
<p><img style="max-width: 100%;"  src="http://f.cl.ly/items/1t251q163V2U383Z183u/huboard____Huboard-20120428-114706.jpg" alt="issue order" /></p>
<h3> Aggregate issues from multiple repositories </h3>
<p>Huboard can now aggregate issues from multiple repositories into one singular overview of all your repositories</p>
<p>Simple as adding a label to your repo name <code> Link &lt;=&gt; rauhryan/ghee </code></p>
<p><img style="max-width: 100%;" src="http://f.cl.ly/items/3B0G3w0c3G1s320y2y13/Issues_%C2%B7_rauhryan_huboard-20120428-115302.jpg" alt="link label" /></p>
<p>Huboard shows issues from both repositories! </p>
<p><img style="max-width: 100%;" src="http://f.cl.ly/items/0t450v2n2G3U363i2H1I/huboard____Huboard-20120428-115439.jpg" alt="other repo" /></p>
<p>Github issues just got a little more awesome!</p>
<p>-Ryan</p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/ryanrauh/2012/04/28/huboard-new-feature-overview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The *nix Rube Goldberg machine &#8211; functions!</title>
		<link>http://lostechies.com/ryanrauh/2012/04/23/the-nix-rube-goldberg-machine-functions/</link>
		<comments>http://lostechies.com/ryanrauh/2012/04/23/the-nix-rube-goldberg-machine-functions/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 15:44:07 +0000</pubDate>
		<dc:creator>Ryan Rauh</dc:creator>
				<category><![CDATA[Shell]]></category>
		<category><![CDATA[bash]]></category>

		<guid isPermaLink="false">http://lostechies.com/ryanrauh/?p=147</guid>
		<description><![CDATA[Learn your shell! So a couple weeks ago I finally decided to learn how to use bash functions. I knew they existed but I decided to ignore them for the longest time. Often times you find yourself typing the same&#160;&#8230; <a href="http://lostechies.com/ryanrauh/2012/04/23/the-nix-rube-goldberg-machine-functions/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h1> Learn your shell! </h1>
<p>So a couple weeks ago I finally decided to learn how to use bash functions. I knew they existed but I decided to ignore them for the longest time. </p>
<p>Often times you find yourself typing the same things over and over again into the shell. In our app we deploy 3 windows services and managing them can get really tedious. </p>
<p><code>~/lecode&gt;sc query DovetailEmail-default</code><br />
<code>~/lecode&gt;sc stop DovetailEmail-default</code><br />
<code>~/lecode&gt;sc delete DovetailEmail-default</code></p>
<p><code>~/lecode&gt;sc query DovetailRulesEngine-default</code><br />
<code>~/lecode&gt;sc stop DovetailRulesEngine-default</code><br />
<code>~/lecode&gt;sc delete DovetailRulesEngine-default</code></p>
<p><code>~/lecode&gt;sc query DovetailMessaging-default</code><br />
<code>~/lecode&gt;sc stop DovetailMessaging-default</code><br />
<code>~/lecode&gt;sc delete DovetailMessaging-default</code></p>
<p>That&#8217;s a lot of typing, granted its not that bad when you use your bash history. But you end up hitting the up arrow and changing one word a lot. </p>
<h3> Functions! </h3>
<p>So when you keep repeating yourself over and over again you can quickly write a function that can save you precious keystrokes</p>
<p><code>~/lecode&gt;function fsc() {<br />
    for name in Email RulesEngine Messaging<br />
    do<br />
        sc $1 Dovetail$name-$2<br />
    done<br />
}<br />
</code></p>
<p>Now I can happily type<br />
<code>~/lecode&gt;fsc query default</code><br />
<code>~/lecode&gt;fsc stop default</code><br />
<code>~/lecode&gt;fsc start default</code></p>
<p>It works for other repetitive tasks as well, ie the steps to deploy our app is as follows</p>
<p><code>~/lecode&gt;rm -rf mydefault</code><br />
<code>~/lecode&gt;bottles create-all</code><br />
<code>~/lecode&gt;bottles bundle mydefault -profile default</code><br />
<code>~/lecode&gt;mydefault/BottleRunner.exe deploy -profile default</code></p>
<p>Again&#8230; pretty easy to just use my bash history and hit the up arrow to run all the commands<br />
but its really easy to make a function</p>
<p><code>~/lecode&gt;function fdeploy() {<br />
    rm -rf my$1<br />
    bottles create-all<br />
    bottles bundle my$1 -profile $1<br />
    my$1/BottleRunner.exe deploy -profile $1<br />
}<br />
</code></p>
<p>Then bam!</p>
<p><code>~/lecode&gt;fdeploy default</code><br />
<code>~/lecode&gt;fdeploy storyteller</code><br />
<code>~/lecode&gt;fdeploy hrdemo</code></p>
<p>See thats way mo &#8216;betta than creating a .bat file cause then you have run in cmd.exe, you have to ignore it in git repository, clean up after yourself later&#8230;.</p>
<p>And I just don&#8217;t like that, not one bit.</p>
<p>-Ryan</p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/ryanrauh/2012/04/23/the-nix-rube-goldberg-machine-functions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The *nix Rube Goldberg Machine &#8211; .bat;.cmd done better</title>
		<link>http://lostechies.com/ryanrauh/2012/04/16/the-nix-rube-goldberg-machine-bat-cmd-done-better/</link>
		<comments>http://lostechies.com/ryanrauh/2012/04/16/the-nix-rube-goldberg-machine-bat-cmd-done-better/#comments</comments>
		<pubDate>Mon, 16 Apr 2012 19:11:22 +0000</pubDate>
		<dc:creator>Ryan Rauh</dc:creator>
				<category><![CDATA[Shell]]></category>
		<category><![CDATA[bash]]></category>

		<guid isPermaLink="false">http://lostechies.com/ryanrauh/?p=139</guid>
		<description><![CDATA[Learn your shell! My primary work machine is Ubuntu *happy face* but my day to day work is in a windows VM *sad face* Our project uses a lot of nugets packages and some of those nugets bring in command&#160;&#8230; <a href="http://lostechies.com/ryanrauh/2012/04/16/the-nix-rube-goldberg-machine-bat-cmd-done-better/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h1> Learn your shell! </h1>
<p>My primary work machine is Ubuntu *happy face* but my day to day work is in a windows VM *sad face*</p>
<p>Our project uses a lot of nugets packages and some of those nugets bring in command line tools that we use while developing our project. For example we use a tool called bottles that can package our application up into &#8220;deployable zipfiles&#8221;.</p>
<p>Anyways that tools comes into our project via nuget, but I have to call that tool from the command line all the time. So my coworkers made a batch file that will find the exe in the nuget packages folder and delegate all the command line argument to it so we can all bottles from the root of our project like this</p>
<p><code> ~/lecode/leproject&gt;bottles create-all </code></p>
<p>Here&#8217;s the source code for that cmd file.</p>
<div id="gist-2400567" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'>@ECHO OFF</div><div class='line' id='LC2'>SETLOCAL</div><div class='line' id='LC3'>REM Find BottleRunner in one of the installed Bottles nuget packages</div><div class='line' id='LC4'>FOR /R %~dp0\source\packages %%G IN (BottleRunner.exe) DO (</div><div class='line' id='LC5'>	IF EXIST %%G (</div><div class='line' id='LC6'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SET RUNNER=%%G</div><div class='line' id='LC7'>	)</div><div class='line' id='LC8'>)</div><div class='line' id='LC9'>IF EXIST %RUNNER% (</div><div class='line' id='LC10'>&nbsp;&nbsp;&nbsp;&nbsp;GOTO FOUND</div><div class='line' id='LC11'>)</div><div class='line' id='LC12'>IF &#39;%RUNNER%&#39;==&#39;&#39; GOTO NOTFOUND</div><div class='line' id='LC13'><br/></div><div class='line' id='LC14'>:FOUND</div><div class='line' id='LC15'>%RUNNER% %*</div><div class='line' id='LC16'>GOTO :EOF</div><div class='line' id='LC17'><br/></div><div class='line' id='LC18'>:NOTFOUND</div><div class='line' id='LC19'>ECHO BottleRunner.exe not found.</div><div class='line' id='LC20'>EXIT /B 1</div><div class='line' id='LC21'><br/></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/2400567/107345068d2de51dea942f29204aef5d868c475f/bottles.cmd" style="float:right;">view raw</a>
            <a href="https://gist.github.com/2400567#file_bottles.cmd" style="float:right;margin-right:10px;color:#666">bottles.cmd</a>
            <a href="https://gist.github.com/2400567">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>Pretty simple, it runs a for loop looking for any files named BottleRunner.exe and sets a variable. Then it checks if that variable was found and does a GOTO *gasp* delegating arguments to the exe.</p>
<p>That&#8217;s all well and good but I want to run bottles from bash, cause I&#8217;m in bash way more that cmd and lets face it I hate cmd.exe and don&#8217;t want to use it. </p>
<p>So I came up with this piece of awesome.</p>
<div id="gist-2400567" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'>#!/bin/bash</div><div class='line' id='LC2'>for exe in `find source/packages -type d | sort -r | grep &quot;Bottles\.Tools&quot; | sed -n 1p | xargs grep -rl &quot;BottleRunner\.exe&quot; | sed -n 1p`; </div><div class='line' id='LC3'>do </div><div class='line' id='LC4'>&nbsp;&nbsp;&nbsp;&nbsp;$exe $@; </div><div class='line' id='LC5'>done</div><div class='line' id='LC6'><br/></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/2400567/d7598026eb082378565a93be6e46c8819f04ee1b/bottles" style="float:right;">view raw</a>
            <a href="https://gist.github.com/2400567#file_bottles" style="float:right;margin-right:10px;color:#666">bottles</a>
            <a href="https://gist.github.com/2400567">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p><code> find source/packages -type d | sort -r | grep "Bottles\.Tools" | sed -n 1p | xargs grep -rl "BottleRunner\.exe" | sed -n 1p </code></p>
<p>Holy crap! that&#8217;s a nasty one, what does it do?</p>
<p><code> find source/packages -type d </code><br />
Find all directories (-type d)  in the source/packages folder</p>
<p><code> find source/packages -type d | sort -r</code><br />
Pipe that into sort in order to sort it descending (-r)</p>
<p><code> find source/packages -type d | sort -r | grep "Bottles\.Tools"</code><br />
grep for folders that contain Bottles.Tools</p>
<p><code> find source/packages -type d | sort -r | grep "Bottles\.Tools" | sed -n 1p </code><br />
Only print the first line (-n 1p) so that the highest version number gets printed</p>
<p><code> find source/packages -type d | sort -r | grep "Bottles\.Tools" | sed -n 1p | xargs grep -rl "BottleRunner\.exe" </code><br />
Recursively search that directory (-r) for for files named BottleRunner.exe and print out the file path (-l)</p>
<p><code> find source/packages -type d | sort -r | grep "Bottles\.Tools" | sed -n 1p | xargs grep -rl "BottleRunner\.exe" | sed -n 1p </code><br />
Print the top line in case there is a config file BottleRunner.exe.config</p>
<p> <code>for exe in  `find source/packages -type d | sort -r | grep "Bottles\.Tools" | sed -n 1p | xargs grep -rl "BottleRunner\.exe" | sed -n 1p`; do $exe $@; done </code><br />
Throw that into a for loop so that I can delegate all of the arguments ($@) to the latest bottlerunner.exe</p>
<p>You can use that to delegate to other tools as well just change &#8220;Bottles.Tools&#8221; with the name of you nuget and BottleRunner.exe to the name of the exe you want.</p>
<p>Now I can safely run bottles from bash</p>
<p><code>bottles create-all </code></p>
<p>So much WIN!</p>
<p>Don&#8217;t herp derp it, use my sweet script and avoid cmd.exe</p>
<p>-Ryan</p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/ryanrauh/2012/04/16/the-nix-rube-goldberg-machine-bat-cmd-done-better/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>The *nix Rube Goldberg Machine &#8211; for f in awesome</title>
		<link>http://lostechies.com/ryanrauh/2012/04/03/the-nix-rube-goldberg-machine-for-f-in-awesome/</link>
		<comments>http://lostechies.com/ryanrauh/2012/04/03/the-nix-rube-goldberg-machine-for-f-in-awesome/#comments</comments>
		<pubDate>Tue, 03 Apr 2012 23:14:29 +0000</pubDate>
		<dc:creator>Ryan Rauh</dc:creator>
				<category><![CDATA[Shell]]></category>
		<category><![CDATA[bash]]></category>

		<guid isPermaLink="false">http://lostechies.com/ryanrauh/?p=132</guid>
		<description><![CDATA[Learn your shell! I can&#8217;t stress enough how important it is to learn what every shell program you prefer. cmd, bash, zsh, powershell, doesn&#8217;t matter pick one and learn it! There is endless productivity and general sanity to be gained&#160;&#8230; <a href="http://lostechies.com/ryanrauh/2012/04/03/the-nix-rube-goldberg-machine-for-f-in-awesome/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h1> Learn your shell! </h1>
<p>I can&#8217;t stress enough how important it is to learn what every shell program you prefer. cmd, bash, zsh, powershell, doesn&#8217;t matter pick one and learn it! There is endless productivity and general sanity to be gained by being able to rip out mini rube goldberg machines on a daily basis.</p>
<p>Lets walk through a &#8220;practical&#8221; example of using several commands to make a tedious job easier. Lets convert a bunch of css files into scss files only using the shell.</p>
<p>For the sake of interactivity create a test directory and dump a few css files into it.</p>
<p><code> ~/lecode&gt; mkdir f_in_awesome </code><br />
<code> ~/lecode&gt; cd f_in_awesome </code><br />
<code> ~/lecode/f_in_awesome&gt; for f in herp derp nerp blerp; do touch $f.css; done </code><br />
Just a simple loop to create some tests files.</p>
<p>Now that we have some files lets practice building out a command to move them.</p>
<p><code> ~/lecode/f_in_awesome&gt; find . -maxdepth 1  -name "*.css" </code><br />
Find all the css files in the current directory but don&#8217;t go into any subdirectories</p>
<p>Now turn that into a loop<br />
<code> ~/lecode/f_in_awesome&gt;for f in `find . -maxdepth 1 -name "*.css" `; do echo $f; done </code></p>
<p>Cool our loops correct now lets practice moving them, notice I said practice! I like to use echo to fine tune my Rube Goldberg machines before I set it off that way I get it right in <a href="http://www.youtube.com/watch?v=K2cYWfq--Nw">one take</a>.</p>
<p>First lets figure out how to get just the filename from the path.</p>
<p><code> ~/lecode/f_in_awesome&gt;for f in `find . -name "*.css" -maxdepth 1`; do echo $(basename $f); done </code><br />
Cool $(basename &#8230;) is a function in bash that will return just the filename</p>
<p><code> ~/lecode/f_in_awesome&gt;for f in `find . -name "*.css" -maxdepth 1`; do echo mv $(basename $f) scss/_${$(basename $f)%.*}.scss; done</code><br />
Now lets use substitution ${  %.*} to strip off the file extension so that we can change it to scss</p>
<p>Nice! Now remove echo and move them for realsies! </p>
<p><code> ~/lecode/f_in_awesome&gt;for f in `find . -name "*.css" -maxdepth 1`; do mv $(basename $f) scss/_${$(basename $f)%.*}.scss; done</code></p>
<p>OOOPS! Forgot to make the directory</p>
<p><code> ~/lecode/f_in_awesome&gt;mkdir scss &amp;&amp; !!</code></p>
<p>OK! Couple new concepts there&#8230; This is the command line, you are gonna make mistakes! Thats why we have things like `git reset &#8211;hard`. Bash makes things nice, you can chain commands together with &#038;&#038; and !! is a shortcut to (last command). So mkdir scss &#038;&#038; !! will create our directory and run the last command.</p>
<p>We aren&#8217;t quite done. We created some sass partials, now we need to make an &#8220;application&#8221; file that imports all our partials.</p>
<p><code> ~/lecode/f_in_awesome&gt;cd scss</code></p>
<p>Now lets practice again, I want to print out just the file name without the underscore and stream that into a file<br />
<code> ~/lecode/f_in_awesome/scss&gt;for f in `find .  -name "_*.scss"`; do echo ${$(basename $f)##*_}; done</code><br />
Now lets use substitution ${  ##*_} to take everything after the _</p>
<p><code> ~/lecode/f_in_awesome/scss&gt;for f in `find .  -name "_*.scss"`; do echo ${${$(basename $f)##*_}%.*}; done</code></p>
<p>And then the same substitution we used before to strip off the extension.</p>
<p><code> ~/lecode/f_in_awesome/scss&gt;for f in `find .  -name "_*.scss"`; do echo @import \"${${$(basename $f)##*_}%.*}\"\;; done</code></p>
<p>Now add the @import syntax to make sass happy</p>
<p><code> ~/lecode/f_in_awesome/scss&gt;for f in `find .  -name "_*.scss"`; do echo @import \"${${$(basename $f)##*_}%.*}\"\; &gt;&gt; application.scss; done</code></p>
<p>Ooops! Forgot to touch the file!<br />
<code> ~/lecode/f_in_awesome/scss&gt;touch application.scss &amp;&amp; !!</code></p>
<p>There you have it! I was able to take our app from upwards of 40-60 really granular css files into nice sass partials in no time. Sass will even compress them which was a HUGE win on the performance of our latest release!</p>
<p>Can you imagine moving all those files with the file explorer, renaming all of them, then creating the import file by hand??? Hellz to the no! That&#8217;s why learning your shell will be the best things will will ever do!</p>
<p>Don&#8217;t Herp, Learn teh shell!</p>
<p>-Ryan</p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/ryanrauh/2012/04/03/the-nix-rube-goldberg-machine-for-f-in-awesome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The *nix Rube Goldberg Machine &#8211; find/grep/vim</title>
		<link>http://lostechies.com/ryanrauh/2012/03/22/the-nix-rube-goldberg-machine-findgrepvim/</link>
		<comments>http://lostechies.com/ryanrauh/2012/03/22/the-nix-rube-goldberg-machine-findgrepvim/#comments</comments>
		<pubDate>Thu, 22 Mar 2012 21:39:02 +0000</pubDate>
		<dc:creator>Ryan Rauh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://lostechies.com/ryanrauh/?p=118</guid>
		<description><![CDATA[Learn your shell! Piping grep into grep I was spelunking my .bash_history and came across this little piece of awesome. ~/lecode&#62; find source/ -type f &#124; grep -v " " &#124; xargs grep this\.Asset.* &#124; grep dovetail &#124; grep -v&#160;&#8230; <a href="http://lostechies.com/ryanrauh/2012/03/22/the-nix-rube-goldberg-machine-findgrepvim/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h1> Learn your shell! </h1>
<h2> Piping grep into grep </h2>
<p><img src="http://cdn.memegenerator.net/instances/400x/16865380.jpg" alt="Yo Dawg" /></p>
<p>I was spelunking my .bash_history and came across this little piece of awesome.</p>
<p><code> ~/lecode&gt; find source/ -type f | grep -v " " | xargs grep this\.Asset.* | grep dovetail | grep -v .*\.css | grep -v dovetail\/dovetail | cut -d \: -f 1 | xargs gvim </code></p>
<p>Wow! So what the heck was I doing there? Lets walk through it.</p>
<p>So I&#8217;ve got a problem&#8230; I am OCD about where asset files are located in our project. It&#8217;s a complete mess and every time I complain about it&#8230;</p>
<blockquote style="overflow:hidden;">
<p><img src="http://cl.ly/3b1n2i321K1H0h3p2N3G/trollface.jpg" width="64px" style="float:left;padding:0;margin:5px;"/> &#8220;It will be too hard to go through the app and change all the paths&#8230;&#8221; </p>
</blockquote>
<p><img src="http://28.media.tumblr.com/tumblr_lhgjim2jYx1qbiuveo1_400.gif" alt="guise... srsly" /></p>
<blockquote style="overflow:hidden;">
<p><img src="http://www.gravatar.com/avatar/29283ede6c447fdc62f0ceac42df33ea?s=64" width="64px" style="float:right;padding:0;margin:5px;"/> &#8220;You under estimate my command line awesome-itude!&#8221; </p>
</blockquote>
<p>Turns out its not that hard of a problem, let me break it down. All of our asset imports are abstracted out into an extension method we call from our view</p>
<p><code> &lt;% this.Asset("myasset"); %&gt; </code></p>
<p>Perfect so I have something consistent to grep for</p>
<p><code> ~/lecode&gt; find source/ -type f </code><br />
Find all the files in the source directory</p>
<p><code> ~/lecode&gt; find source/ -type f | grep -v " " </code><br />
Pipe that into grep and inverse match any path with a space (-v)</p>
<p><code> ~/lecode&gt; find source/ -type f | grep -v " " | xargs grep this\.Asset.*  </code><br />
xargs that path into grep and search each file for any lines containing `this.Asset*`</p>
<p><code> ~/lecode&gt; find source/ -type f | grep -v " " | xargs grep this\.Asset.* | grep dovetail </code><br />
I only care about asset calls that contain dovetail</p>
<p><code> ~/lecode&gt; find source/ -type f | grep -v " " | xargs grep this\.Asset.* | grep dovetail | grep -v .*\.css </code><br />
Inverse grep (-v) any lines containing .css</p>
<p><code> ~/lecode&gt; find source/ -type f | grep -v " " | xargs grep this\.Asset.* | grep dovetail | grep -v .*\.css | grep -v dovetail\/dovetail </code></p>
<p><img width="550px" src="http://f.cl.ly/items/3s2s093G3U1d0L22171C/Image%202012-03-22%20at%203.52.27%20PM.png" alt="console output" /><br />
Inverse grep (-v) assets that start with dovetail/dovetail because those are correct.</p>
<p><code> ~/lecode&gt; find source/ -type f | grep -v " " | xargs grep this\.Asset.* | grep dovetail | grep -v .*\.css | grep -v dovetail\/dovetail | cut -d \: -f 1 </code></p>
<p>Notice how grep outputs the file path and then the match. We can use cut to parse the output on the &#8220;:&#8221; (-d \:) and take the first column (-f 1)</p>
<p><img width="550px" src="http://f.cl.ly/items/2I2W0s1d1X0k3K1u3n3L/Image%202012-03-22%20at%203.56.32%20PM.png" alt="console output" /></p>
<p><code> ~/lecode&gt; find source/ -type f | grep -v " " | xargs grep this\.Asset.* | grep dovetail | grep -v .*\.css | grep -v dovetail\/dovetail | cut -d \: -f 1 | xargs gvim </code><br />
Now I have my file names, xargs that into gvim and it loads up a new instance of gvim with all the files I need to change in a buffer list. Now I can make my change and :bnext (buffer next) to the next file.</p>
<blockquote style="overflow:hidden;">
<p><img src="http://f.cl.ly/items/2v0x1U0d1p2L0z1g2u1N/clippy.gif" width="64px" style="float:left;padding:0;margin:5px;"/> &#8220;It looks like you are trying to change a bunch of files&#8230; Want to use find and replace?&#8221; </p>
</blockquote>
<blockquote style="overflow:hidden;">
<p><img src="http://www.gravatar.com/avatar/29283ede6c447fdc62f0ceac42df33ea?s=64" width="64px" style="float:right;padding:0;margin:5px;"/> &#8220;Shut up troll!&#8221; </p>
</blockquote>
<p>Deeerp<br />
-Ryan</p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/ryanrauh/2012/03/22/the-nix-rube-goldberg-machine-findgrepvim/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>The *nix Rube Goldberg Machine</title>
		<link>http://lostechies.com/ryanrauh/2012/03/20/the-nix-rube-goldberg-machine-2/</link>
		<comments>http://lostechies.com/ryanrauh/2012/03/20/the-nix-rube-goldberg-machine-2/#comments</comments>
		<pubDate>Tue, 20 Mar 2012 15:54:55 +0000</pubDate>
		<dc:creator>Ryan Rauh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bash]]></category>

		<guid isPermaLink="false">http://lostechies.com/ryanrauh/?p=106</guid>
		<description><![CDATA[Learn your shell! Last time I posted a quick intro into basic shell programming. &#8220;Bash isn&#8217;t programming, its scripting&#8230;&#8221; &#8220;Shut up troll, its programming&#8221; This time I&#8217;d like to quickly explain loops. I&#8217;ll give you a quick example of how&#160;&#8230; <a href="http://lostechies.com/ryanrauh/2012/03/20/the-nix-rube-goldberg-machine-2/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h1> Learn your shell! </h1>
<p>Last time I posted a quick intro into basic shell programming. </p>
<blockquote style="overflow:hidden;">
<p><img src="http://cl.ly/3b1n2i321K1H0h3p2N3G/trollface.jpg" width="64px" style="float:left;padding:0;margin:5px;"/> &#8220;Bash isn&#8217;t programming, its scripting&#8230;&#8221; </p>
</blockquote>
<blockquote style="overflow:hidden;">
<p><img src="http://www.gravatar.com/avatar/29283ede6c447fdc62f0ceac42df33ea?s=64" width="64px" style="float:right;padding:0;margin:5px;"/> &#8220;Shut up troll, its programming&#8221; </p>
</blockquote>
<p>This time I&#8217;d like to quickly explain loops.</p>
<p>I&#8217;ll give you a quick example of how you can use a loop to do some simple things. </p>
<p>Lately I&#8217;ve been working on <a href="http://fubu-project.org/">FubuMVC</a> and the project has a *few* <a href="https://github.com/DarthFubuMVC">repositories</a> and it can be a pain in the ass to update all of the git repositories. Luckily bash is here to help. </p>
<p>I happened to have all Fubu related project in one directory so bash makes this pretty simple.</p>
<p><code> ~&gt; cd ~/lecode/fubuproj</code></p>
<p><code> ~/lecode/fubuproj&gt; ls </code><br />
<code><br />
.<br />
fubumvc<br />
FubuFastPack<br />
ripple<br />
bottles<br />
fubucore<br />
</code></p>
<p>Ok now lets test out a simple for loop.</p>
<p><code> ~/lecode/fubuproj&gt; for d in `ls`; do echo $d; done </code><br />
<code><br />
.<br />
fubumvc<br />
FubuFastPack<br />
ripple<br />
bottles<br />
fubucore<br />
</code></p>
<p>Ok awesome, now we are getting some where. </p>
<blockquote style="overflow:hidden;">
<p><img src="http://cl.ly/3b1n2i321K1H0h3p2N3G/trollface.jpg" width="64px" style="float:left;padding:0;margin:5px;"/> &#8220;But what if I have files as well as directories&#8230;&#8221; </p>
</blockquote>
<p><code> ~/lecode/fubuproj&gt; for d in `ls -d */`; do echo $d; done </code></p>
<p>When you are working in bash, there are a lot of gotchas that can catch you off guard. One of those gotchas is aliases&#8230; I have ls aliased to `ls &#8211;color -xXw80` to make it look the way I want it to by default. The gotcha is &#8211;color that will bit you when you try and pipe color into other things. So to avoid aliases you can point to ls directly from /bin/ls</p>
<p><code> ~/lecode/fubuproj&gt; for d in `/bin/ls -d */`; do echo $d; done </code></p>
<p>Now you can cd into the directory and run `git status` to make sure you don&#8217;t have any outstanding changes.</p>
<p><code> ~/lecode/fubuproj&gt; for d in `/bin/ls -d */`; do cd $d; git status; cd ..; done </code></p>
<p>If everything is checked, I&#8217;ll make sure they are all on the master branch</p>
<p><code> ~/lecode/fubuproj&gt; for d in `/bin/ls -d */`; do cd $d; git checkout master; cd ..; done </code></p>
<p>Fetch the latest changes&#8230;</p>
<p><code> ~/lecode/fubuproj&gt; for d in `/bin/ls -d */`; do cd $d; git fetch; cd ..; done </code></p>
<p>And catch up my master branch</p>
<p><code> ~/lecode/fubuproj&gt; for d in `/bin/ls -d */`; do cd $d; git rebase origin/master; cd ..; done </code></p>
<p>Nice&#8230; Now all my projects are up to date.</p>
<p>HerpDerp</p>
<p>-Ryan</p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/ryanrauh/2012/03/20/the-nix-rube-goldberg-machine-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The *nix Rube Goldberg Machine!</title>
		<link>http://lostechies.com/ryanrauh/2012/03/19/the-nix-rube-goldberg-machine/</link>
		<comments>http://lostechies.com/ryanrauh/2012/03/19/the-nix-rube-goldberg-machine/#comments</comments>
		<pubDate>Mon, 19 Mar 2012 16:57:07 +0000</pubDate>
		<dc:creator>Ryan Rauh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://lostechies.com/ryanrauh/?p=81</guid>
		<description><![CDATA[Learn your shell! Since I&#8217;ve started at Dovetail in June the best tool I&#8217;ve sharpened is my command line skills. My first week at Dovetail we got a surprise visit from @bob_pace and while pairing with him I was amazed&#160;&#8230; <a href="http://lostechies.com/ryanrauh/2012/03/19/the-nix-rube-goldberg-machine/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h1>Learn your shell!</h1>
<p>Since I&#8217;ve started at Dovetail in June the best tool I&#8217;ve sharpened is my command line skills. My first week at Dovetail we got a surprise visit from @bob_pace and while pairing with him I was amazed by how effective he was with the command line. Well that really motivated me to improve my own skills. </p>
<p>I&#8217;m gonna run through some basic building blocks that are required to work with files in the command line. </p>
<h2> <code>~&gt; find </code> </h2>
<p>First step is finding the files you want to work with. </p>
<p>* List all the files in your pwd (present working directory). This will list every file and directory and recursively from the<br />
path you have specified</p>
<p><code>~&gt; find .</code></p>
<p>* List all files with certain extension</p>
<p><code>~&gt; find . -name "*.js"</code></p>
<p>* List only files and not directories</p>
<p><code>~&gt; find . -type f</code></p>
<p>* Protip: If you suspect files will spaces in the name (try to never do this!)</p>
<p><code>~&gt; find . -type f -print0</code></p>
<h2> <code>~&gt; xargs </code> </h2>
<p>xargs is your favorite buddy/friend/pal when working will large lists of files. The only thing xargs does, is take whats piped into it and stick it on the end of the next command. </p>
<p>Try it yourself</p>
<p><code>~&gt; find . -name "*.js" | echo </code></p>
<p>Whoops&#8230; WTF, there is no output. Now try</p>
<p><code>~&gt; find . -name "*.js" | xargs echo </code></p>
<p>See if put it at the end of the next piped command, simple right!?</p>
<h2> <code>~&gt; grep </code> </h2>
<p>ZOMG! grep has changed my life&#8230; </p>
<p>grep will search a line of input for with a regular expression that you provide it. If you pass it a file name it will search each line of the file and output any matches.</p>
<p><code>~&gt; echo "hello" | grep hello </code></p>
<p>See simple right!</p>
<p>The command line is all about chaining inputs and outputs, its magical! Lets do that.</p>
<p>For example if you are using nuget and you want to know what version of FubuMVC you are using</p>
<p><code>~&gt; find. -name "packages.config" | xargs grep -h FubuMVC\.References </code></p>
<h2> <code>~&gt; sed </code> </h2>
<p>Now lets talk about whats *really* awesome about the command line. MUTHA !@#$in sed! stands for stream editor and its amazing. </p>
<p>Back in the early days of using nuget, we got into a situation where it was adding multiple version of the same dependency in our package configs&#8230;. its was a pain in the ass! Mostly due to the fact we have 30 projects and a lot of them are bottles that are not loaded with the core products solution file. Well if you are using the Visual Studio nuget manager fail sauce POS it would get all messed up and start putting extra references in the package configs. When we switched to our own tool to manage this madness, <a href="https://github.com/DarthFubuMVC/ripple">ripple </a> it got all sorts of messed up.</p>
<p>So sed to the rescue! So the great thing about the command line is that you can fine tune your command before you actually go through with it</p>
<p><code>~&gt; find. -name "packages.config" | xargs grep -h FubuMVC\.References | sed d </code></p>
<p>Bam that should return no output, you are telling sed to delete any line that is passed to it. Now lets say that all of your project have two references to Fubu 0.9.2.722 and 0.9.3.731 and you want to delete the lower one. Lets practice first. </p>
<p><code>~&gt; find. -name "packages.config" | xargs grep -h FubuMVC\.References | sed /FubuMVC\.Reference\..*722/d </code></p>
<p>That should only output the higher version of the two versions. Now that we know it works&#8230; we can put it all together and get destructive. We will just tweek our current command a little. Switch the grep flag to -l (lower case L), this will tell grep to output the filename only. Then we&#8217;ll need to pipe this to sed, but we&#8217;ll need to xargs it to the end since we want sed to modify the file. Then we&#8217;ll need to tell sed to delete the lines that contain the lower version number passing the flag -i will tell sed to modify the file in place.</p>
<p><code>~&gt; find. -name "packages.config" | xargs grep -l FubuMVC\.References | xargs sed -i /FubuMVC\.Reference\..*722/d </code></p>
<p>Bam! I just modified 30 files without opening any of them&#8230;. Like I said its the best thing I&#8217;ve learned my entire career!</p>
<p>Herp it don&#8217;t Derp it!</p>
<p>-Ryan</p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/ryanrauh/2012/03/19/the-nix-rube-goldberg-machine/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Huboard &#8211; Github issues made awesome</title>
		<link>http://lostechies.com/ryanrauh/2012/01/13/huboard-github-issues-made-awesome/</link>
		<comments>http://lostechies.com/ryanrauh/2012/01/13/huboard-github-issues-made-awesome/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 22:47:59 +0000</pubDate>
		<dc:creator>Ryan Rauh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[huboard]]></category>

		<guid isPermaLink="false">http://lostechies.com/ryanrauh/?p=91</guid>
		<description><![CDATA[Meet Huboard ! Huboard is a kanban style drag and drop task board built entirely on top of the github api. How to get started Its easy. Go to any of your github repositories and add issues as you normally&#160;&#8230; <a href="http://lostechies.com/ryanrauh/2012/01/13/huboard-github-issues-made-awesome/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h1>Meet <a title="Go to huboard its awesome!" href="http://huboard.com" target="_blank">Huboard</a> !</h1>
<p><img style="max-width: 100%;" src="http://f.cl.ly/items/2V300F3W1W20121x1q00/Image%202012-01-13%20at%203.48.44%20PM.png" alt="Issues" /></p>
<p><img style="max-width: 100%;" src="http://f.cl.ly/items/1z42372T3R2H001k3D0T/Image%202012-01-13%20at%203.49.07%20PM.png" alt="Milestones" /></p>
<p>Huboard is a kanban style drag and drop task board built entirely <em>on top of</em> the <a href="http://developer.github.com/v3/">github api</a>.</p>
<h3>How to get started</h3>
<p>Its easy. Go to any of your github repositories and add issues as you normally would. Next create some labels that represent your business process. For example, at Dovetail we use a simple workflow.</p>
<ul>
<li>0 &#8211; Backlog</li>
<li>1 &#8211; Development</li>
<li>2 &#8211; Test</li>
<li>3 &#8211; Done</li>
</ul>
<p>Notice the labels follow a pattern of &#8216;{number} &#8211; {title}&#8217;? The number represents the order you want your column to appear in your process and the title represents the header of the column. Huboard will automatically use the lowest number column as the hidden drawer column on the task board.</p>
<p><img style="max-width: 100%;" src="http://f.cl.ly/items/1f2k3E443j111z0b2V1J/Image%202012-01-13%20at%204.06.29%20PM.png" alt="Drawer" /></p>
<h3>Move cards with git commits! weeeeeee</h3>
<p>One of the coolest features of huboard is the ability to move cards through your process with git commit messages. You can create a post receive hook in huboard by clicking Setup at the top and create hook. This will add a commit hook into github so that huboard knows when you have committed code. Just put &#8216;pushes GH-5&#8242; in your commit message and when you next push your changes up to github, Huboard will look for these commands and will move issue #5 into the next column in your process! Huboard also supports push, move, and moves as command names.</p>
<h3>It&#8217;s open source!</h3>
<p>That&#8217;s right! <a href="http://github.com/rauhryan/huboard">Huboard </a>is open source hosted on <a href="http://github.com/rauhryan/huboard">github</a>! And&#8230; Huboard uses huboard!</p>
<p><img style="max-width: 100%;" src="http://cl.ly/1k0j3l1V0D1j2O0W123j/Image%202012-01-13%20at%204.18.40%20PM.png" alt="Huboard" /></p>
<h3>Sounds awesome, now tell me about the suck!</h3>
<p>Huboard is in beta! (big surprise) Currently, it is open for everyone to use for free! We want to grow it slowly, which means we will be cutting off access after a certain amount of users to gauge how the site handles the traffic.</p>
<p>Huboard does not work in IE. Sorry we tried, we really did but we can&#8217;t figure out or debug the problems with IE. <em>We !@#$ing hate IE</em></p>
<p>Issues have to be opened and closed on <a href="http://github.com">github.com</a>, they are high on the backlog and coming soon! (in the mean time &#8216;gem install ghi&#8217; and bask in the awesome that is command line issue creation)</p>
<h3>Thats it!</h3>
<p>Enjoy, feedback can be sent to <a href="http://twitter.com/huboard">@huboard</a>. Issues and feature requests can be logged on <a href="https://github.com/rauhryan/huboard/issues/">github</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/ryanrauh/2012/01/13/huboard-github-issues-made-awesome/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>r/CircleJerk</title>
		<link>http://lostechies.com/ryanrauh/2012/01/04/circlejerk/</link>
		<comments>http://lostechies.com/ryanrauh/2012/01/04/circlejerk/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 06:31:21 +0000</pubDate>
		<dc:creator>Ryan Rauh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://lostechies.com/ryanrauh/?p=82</guid>
		<description><![CDATA[circlejerk To kneel in a circle with others and pleasure oneself. Also refers to a pompous, self-congratulatory discussion where little to no progress is made. 1. &#8220;I just walked in on a circlejerk yesterday; it was terrible!&#8221; 2. &#8220;Did you&#160;&#8230; <a href="http://lostechies.com/ryanrauh/2012/01/04/circlejerk/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><span style="color: #000000;"><strong><br />
</strong></span></p>
<table id="entries">
<tbody>
<tr>
<td id="entry_130402" colspan="2">
<div><strong><a href="http://www.urbandictionary.com/define.php?term=circlejerk">circlejerk</a></strong><br />
To kneel in a circle with others and pleasure oneself. Also refers to a pompous, self-congratulatory discussion where little to no progress is made.</div>
<div><em>1. &#8220;I just walked in on a circlejerk yesterday; it was terrible!&#8221; </em><br />
<em>2. &#8220;Did you catch that board meeting? Man, what a circlejerk!&#8221;</em></div>
</td>
</tr>
</tbody>
</table>
<p>If you read my blog you should know by now that I am a big fan of reddit.com. There is a sub-reddit called <a title="r/circlejerk" href="http://reddit.com/r/circlejerk">r/circlejerk</a> it not the most popular of sub-reddits but it is one of my favorites.</p>
<p>Lately there has been a lot posts about how Ruby on Rails might not follow the <a href="http://blog.steveklabnik.com/posts/2011-12-30-active-record-considered-harmful">best practices</a>. Which was followed up by a bunch of <a href="http://lostechies.com/jimmybogard/2012/01/03/formula-for-project-success/">karma </a><a href="http://lostechies.com/derickbailey/2012/01/03/composition-of-responsibility-vs-interface-implementation/">whoring </a>/ <a href=" http://lostechies.com/ryanrauh/2012/01/04/circlejerk/">troll </a><a href="http://lostechies.com/chadmyers/2011/12/30/sweet-sweet-vindication/">posts </a>that<a href="http://wekeroad.com/2012/01/03/rails-has-turned-me-into-a-cannibalizing-idiot/"> don&#8217;t really help that much</a>.</p>
<blockquote><p><img style="float: left; padding: 0; margin: 0;" src="http://cl.ly/3b1n2i321K1H0h3p2N3G/trollface.jpg" alt="" width="48px" /> &#8220;Herp Derp: Hey&#8230; aren&#8217;t you doing the same thing?&#8221;</p></blockquote>
<p>&nbsp;</p>
<p>Yep! I bet my girlfriend this would make the front page.</p>
<p><img src="http://memegenerator.net/cache/instances/400x/12/12545/12846515.jpg" alt="haters are coming" /><br />
.NET went through a similar movement not long ago called ALT.NET. To make a long story short, a lot of passionate, opinionated .NET developers started a bunch of blog posts, rants, and conferences trying to convince the &#8220;mainstream&#8221; .NET community that the Microsoft way was wrong and things like agile, IoC, TDD, and SOLID were the right way. We all know how the story ends, you guessed it a gigantic circlejerk. Why? Because much like<a title="circlejerk" href="http://reddit.com/r/circlejerk"> r/circlejerk</a> most of the people reading/writing the post are just in an echo chamber. The mainstream doesn&#8217;t care&#8230; They want more drag and drop fail sauce that&#8217;s even worse than ActiveRecord.</p>
<p>Don&#8217;t think you are immune Rails developers! Guess what Rails is more popular than ever and soon there is going to be a lot of &#8220;mainstream&#8221; Rails developers that just plain don&#8217;t care. Don&#8217;t let that be you! Don&#8217;t let it become a huge <a href="http://andrzejonsoftware.blogspot.com/2011/12/rails-is-still-cool.html">circlejerk</a> called ALT.rb. <a href="http://lostechies.com/chadmyers/2011/12/30/sweet-sweet-vindication/">Principles do matter</a>.</p>
<p>I&#8217;ve got confidence that Rails will actually get better because of this, you&#8217;ve got guys like this<br />
<img src="http://f.cl.ly/items/2p0D0l443w2L353V3Z2O/dhh.jpg" alt="dhh" /><br />
<img src="http://twitpic.com/show/iphone/80t2yt" alt="tenderlove" /></p>
<p>And sadly .NET&#8217;s got this guy<br />
<img src="http://www.motivationals.org/demotivational-posters/demotivational-poster-14307.jpg" alt="ballmer" /></p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/ryanrauh/2012/01/04/circlejerk/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Conjunction Junction: What&#8217;s your function?</title>
		<link>http://lostechies.com/ryanrauh/2011/11/04/conjunction-junction-whats-your-function/</link>
		<comments>http://lostechies.com/ryanrauh/2011/11/04/conjunction-junction-whats-your-function/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 08:38:51 +0000</pubDate>
		<dc:creator>Ryan Rauh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://lostechies.com/ryanrauh/?p=70</guid>
		<description><![CDATA[A came across the video from my JavaScript talk at Austin Code Camp. I just watched it and I have to say it&#8217;s really weird hearing myself present. I am probably way too harsh on myself because I noticed a&#160;&#8230; <a href="http://lostechies.com/ryanrauh/2011/11/04/conjunction-junction-whats-your-function/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A came across the <a href="http://usergroup.tv/videos/conjunction-junction-what-s-your-function-javascript">video</a> from my JavaScript talk at Austin Code Camp. I just watched it and I have to say it&#8217;s really weird hearing myself present. I am probably way too harsh on myself because I noticed a lot of mistakes I made when I was trying to do my live coding example. I really wish it was a recording of this same talk I did at Pablo&#8217;s Fiesta because the crowd was really really interactive and we ended going through a really good overloading functions example in JavaScript.</p>
<p>Never the less it&#8217;s out there and I&#8217;ve been told that it was a pretty good talk. Feel free to leave me some feedback anything I can do to make the talk better or more informative is greatly appreciated.  </p>
<p>Video (flash): <a href="http://usergroup.tv/videos/conjunction-junction-what-s-your-function-javascript">http://usergroup.tv/videos/conjunction-junction-what-s-your-function-javascript</a><br />
Video (html5 fullscreen): <a href="http://www.screencast.com/users/UserGroupTV/folders/UGTV/media/9ca157f3-b93f-4f54-bd1d-8d8f6f0d657b/embed">http://www.screencast.com/users/UserGroupTV/folders/UGTV/media/9ca157f3-b93f-4f54-bd1d-8d8f6f0d657b/embed</a><br />
Slides: <a href="http://hccjavascript.heroku.com">http://hccjavascript.heroku.com</a></p>
<p> <iframe type="text/html" style="overflow: hidden;" src="http://www.screencast.com/users/UserGroupTV/folders/UGTV/media/9ca157f3-b93f-4f54-bd1d-8d8f6f0d657b/embed" frameborder="0" height="600" scrolling="no" width="600"></iframe></p>
<p>Big thanks to <a href="http://usergroup.tv">UserGroup.tv</a> for publishing this video.</p>
<p>AMA definitely Derpin it in this video,</p>
<p>-Ryan</p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/ryanrauh/2011/11/04/conjunction-junction-whats-your-function/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

