<?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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Phatness.com</title>
	
	<link>http://phatness.com</link>
	<description>- Still kickin</description>
	<lastBuildDate>Thu, 02 Feb 2012 17:43:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/phatness" /><feedburner:info uri="phatness" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>42.768373</geo:lat><geo:long>-83.378059</geo:long><item>
		<title>Merging With Git and P4Merge</title>
		<link>http://feedproxy.google.com/~r/phatness/~3/itGHNarEMzE/</link>
		<comments>http://phatness.com/2012/01/merging-with-git-and-p4merge/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 13:37:10 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[The Setup]]></category>

		<guid isPermaLink="false">http://phatness.com/?p=2572</guid>
		<description><![CDATA[While there are some great diff tools out there, there are very few good merge tools. My favorite diff tool is Kaleidoscope. And there are several others I wouldn&#8217;t mind using. However, Kaleidoscope does not do merging. Too me, software development requires much more merging then diff&#8217;ing. And many times, github.com&#8217;s HTML diff view is [...]]]></description>
			<content:encoded><![CDATA[<p>While there are some great diff tools out there, there are very few good merge tools.  My favorite diff tool is <a href="http://phatness.com/2011/01/kaleidoscope-text-comparison/">Kaleidoscope.</a>  And there are several others I wouldn&#8217;t mind using.</p>
<p>However, Kaleidoscope does not do merging.  Too me, software development requires much more merging then diff&#8217;ing.  And many times, <a href="http://github.com/">github.com&#8217;s</a> HTML diff view is more than sufficient.  Heck, even command line diff works just fine for small differences.  Looking at diff&#8217;s is easy and paying money for a tool that only does diffs is something I find hard to swallow.<br />
<span id="more-2572"></span><br />
Taking three files, and coming up with a new one is quite a bit more difficult.  In my experience, not many tools handle it well.  The biggest problems are:</p>
<ul>
<li>Integration and interoperability with the OS (cough, OS X native)</li>
<li>Intelligent resolution of conflicts</li>
<li>Differences within a line</li>
<li>Easily choosing which diff chunks to take</li>
<li>Being able to edit the final merged file</li>
</ul>
<p>Many times, the merge tool will not be fine grained enough to allow for differences within a line to be accurately merged.  You&#8217;ll even have problems with whole lines of code not being intelligently merged.  </p>
<p>The two best tools I&#8217;ve found to handle this are:</p>
<ul>
<li><a href="http://www.araxis.com/merge/">Araxis Merge</a></li>
<li><a href="http://www.perforce.com/product/components/perforce_visual_merge_and_diff_tools">P4Merge</a></li>
</ul>
<p>Araxis Merge was originally a windows product that I used in a previous life.  It was great because it offered not just merging, but standard diffs, as well as directory diffs.  Really nice and I highly recommend.  However, I don&#8217;t use it anymore, even though they have a  Mac version.  The problem is the price is absurd: $269 and then $49 a year, thereafter.  That&#8217;s insane.</p>
<p>Especially insane, when the next best tool is free!  P4Merge is actually from another SCM company, <a href="http://perforce.com">Perforce.</a>  It is more of a single purpose tool then something like Araxis Merge.  However, it does do merging very well.  I&#8217;ve found that it can start to get confused on resolving conflicts, such as when an existing chunk of code is just moved down the file while another commit inserted new code at the same spot.  But that&#8217;s where being able to edit the final merged file at the same time helps.</p>
<p><img src="http://phatness.com/wp-content/uploads/2012/01/Screen-Shot-2012-01-04-at-3.59.04-PM-675x526.png" alt="P4Merge" title="P4Merge" width="675" height="526" class="size-large wp-image-2574" /></p>
<p>(Notice the yellow, blue, and green icons on the right side of the bottom pane.  You click each one to switch which code is used in the final output.)</p>
<p>You would think that using P4Merge with a competing SCM like git would not be easy.  But it&#8217;s actually quite straightforward.  Go install <a href="http://www.perforce.com/product/components/perforce_visual_merge_and_diff_tools">P4Merge</a> and then just add this to ~/.gitconfig:</p>
<pre>
[merge]
        keepBackup = false
        tool = custom

[mergetool "P4Merge"]
        cmd = /Applications/p4merge.app/Contents/Resources/launchp4merge "$PWD/$BASE" "$PWD/$REMOTE" "$PWD/$LOCAL" "$PWD/$MERGED"
        keepTemporaries = false
        trustExitCode = false
        keepBackup = false
</pre>
<p>When you need to merge with git, run</p>
<pre>
git mergetool
</pre>
<p>Instead of the normal, git merge.  The one problem I&#8217;ve run into is that even though keepTemoraries/keepBackup is false, I still get .orig files littered about when a merge happens.  These have to be cleaned up manually.</p>
<img src="http://feeds.feedburner.com/~r/phatness/~4/itGHNarEMzE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://phatness.com/2012/01/merging-with-git-and-p4merge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://phatness.com/2012/01/merging-with-git-and-p4merge/</feedburner:origLink></item>
		<item>
		<title>Add Some Color to Git</title>
		<link>http://feedproxy.google.com/~r/phatness/~3/O-HcAtgmpL4/</link>
		<comments>http://phatness.com/2012/01/add-some-color-to-git/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 14:30:59 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[The Setup]]></category>

		<guid isPermaLink="false">http://phatness.com/?p=2550</guid>
		<description><![CDATA[By default, git is colorless. What decade is this again? &#8220;Squirt&#8221; this crap in your prompt and things will be better. git config --global color.ui "auto" git config --global color.branch "auto" git config --global color.status "auto" git config --global color.diff "auto"]]></description>
			<content:encoded><![CDATA[<p>By default, git is colorless.  What decade is this again?  &#8220;Squirt&#8221; this crap in your prompt and things will be better.</p>
<pre class="bash">
git config --global color.ui "auto"
git config --global color.branch "auto"
git config --global color.status "auto"
git config --global color.diff "auto"
</pre>
<img src="http://feeds.feedburner.com/~r/phatness/~4/O-HcAtgmpL4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://phatness.com/2012/01/add-some-color-to-git/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://phatness.com/2012/01/add-some-color-to-git/</feedburner:origLink></item>
		<item>
		<title>Number 3</title>
		<link>http://feedproxy.google.com/~r/phatness/~3/E-wxPXLQ1Ts/</link>
		<comments>http://phatness.com/2012/01/number-3/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 22:03:58 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[Family]]></category>

		<guid isPermaLink="false">http://phatness.com/?p=2600</guid>
		<description><![CDATA[Because I totally flaked on Number 3 getting a mention when it was time, he gets two pictures. Welcome, Lane Matthew Wille. &#160; Don&#8217;t bother sending in your address, ladies. He is too shy for dates&#8230; &#160; He is 7 months old now. 6 in these pictures.]]></description>
			<content:encoded><![CDATA[<p>Because I totally flaked on Number 3 getting a mention when it was time, he gets two pictures.</p>
<p>Welcome, Lane Matthew Wille.</p>
<p><img src="http://phatness.com/wp-content/uploads/2012/01/IMG_2643-e1325714495491-675x659.jpg" alt="" title="IMG_2643" width="675" height="659" class="alignleft size-large wp-image-2601" /></p>
<p>&nbsp;</p>
<h3>Don&#8217;t bother sending in your address, ladies.  He is too shy for dates&#8230;</h3>
<p>&nbsp;</p>
<p><img src="http://phatness.com/wp-content/uploads/2012/01/IMG_2642-e1325714468653-675x626.jpg" alt="" title="IMG_2642" width="675" height="626" class="alignleft size-large wp-image-2602" /></p>
<p>He is 7 months old now.  6 in these pictures.</p>
<img src="http://feeds.feedburner.com/~r/phatness/~4/E-wxPXLQ1Ts" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://phatness.com/2012/01/number-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://phatness.com/2012/01/number-3/</feedburner:origLink></item>
		<item>
		<title>Which Git Branch am I Looking At?</title>
		<link>http://feedproxy.google.com/~r/phatness/~3/u7f31uLJxn0/</link>
		<comments>http://phatness.com/2012/01/which-git-branch-am-i-looking-at/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 14:05:30 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[The Setup]]></category>

		<guid isPermaLink="false">http://phatness.com/?p=2544</guid>
		<description><![CDATA[This is one of the best tips if you are developer working with git on the terminal. If you are inside a directory or project managed by git, this will append the working branch your code is on to the prompt! function parse_git_branch { git branch --no-color 2> /dev/null &#124; sed -e '/^[^*]/d' -e 's/* [...]]]></description>
			<content:encoded><![CDATA[<p>This is one of the best tips if you are developer working with git on the terminal.  If you are inside a directory or project managed by git, this will append the working branch your code is on to the prompt!</p>
<pre class="bash">
function parse_git_branch {
git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\ \[\1\]/'
}

BOLD=$(tput bold)
RESET=$(tput sgr0)

export PS1="[\u@\h \W]\[$BOLD\]\$(parse_git_branch)\[$RESET\] $ "
</pre>
<p>The key here is, of course, the bash function created called: parse_git_branch().  Then we are modifying the default bash prompt and including the result via: $(parse_git_branch)</p>
<p>I do like to throw in a little color for the branch.  So my actual prompt is:</p>
<pre>
export PS1="[\u@\h \W]\e[0;35m\[$BOLD\]\$(parse_git_branch)\[$RESET\]\e\[m $ "
</pre>
<img src="http://feeds.feedburner.com/~r/phatness/~4/u7f31uLJxn0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://phatness.com/2012/01/which-git-branch-am-i-looking-at/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://phatness.com/2012/01/which-git-branch-am-i-looking-at/</feedburner:origLink></item>
		<item>
		<title>Mac Terminal Prompt</title>
		<link>http://feedproxy.google.com/~r/phatness/~3/cvStZnxGY_s/</link>
		<comments>http://phatness.com/2012/01/mac-terminal-prompt/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 17:22:30 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[The Setup]]></category>

		<guid isPermaLink="false">http://phatness.com/?p=2553</guid>
		<description><![CDATA[The default prompt for bash on Mac OS X is wrong, err, different. I spend a lot of time on linux servers through terminal and like to keep things consistent. Append this to your ~/.bash_profile: to keep things in line with Red Hat: export PS1="[\\u@\h \\W]\\$ " If you want to get more original, here [...]]]></description>
			<content:encoded><![CDATA[<p>The default prompt for bash on Mac OS X is <del>wrong</del>, err, different.  I spend a lot of time on linux servers through terminal and like to keep things consistent.  Append this to your ~/.bash_profile: to keep things in line with Red Hat:</p>
<pre>
export PS1="[\\u@\h \\W]\\$ "
</pre>
<p>If you want to get more original, here is a list of codes you can use instead:</p>
<ul>
<li><b>\a</b> :     an ASCII bell character (07)</li>
<li><b>\d</b> :     the date in &#8220;Weekday Month Date&#8221; format (e.g., &#8220;Tue May 26&#8243;)</li>
<li><b>\D{format}</b> :	the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a  locale-specific  time  representation.  The braces are required</li>
<li><b>\e</b> :     an ASCII escape character (033)</li>
<li><b>\h</b> :     the hostname up to the first &#8216;.&#8217;</li>
<li><b>\H</b> :     the hostname</li>
<li><b>\j</b> :     the number of jobs currently managed by the shell</li>
<li><b>\l</b> :     the basename of the shell’s terminal device name</li>
<li><b>\n</b> :     newline</li>
<li><b>\r</b> :     carriage return</li>
<li><b>\s</b> :     the name of the shell, the basename of $0 (the portion following the final slash)</li>
<li><b>\t</b> :     the current time in 24-hour HH:MM:SS format</li>
<li><b>\T</b> :     the current time in 12-hour HH:MM:SS format</li>
<li><b>\@</b> :     the current time in 12-hour am/pm format</li>
<li><b>\A</b> :     the current time in 24-hour HH:MM format</li>
<li><b>\u</b> :     the username of the current user</li>
<li><b>\v</b> :     the version of bash (e.g., 2.00)</li>
<li><b>\V</b> :     the release of bash, version + patch level (e.g., 2.00.0)</li>
<li><b>\w</b> :     the current working directory, with $HOME abbreviated with a tilde</li>
<li><b>\W</b> :     the basename of the current working directory, with $HOME abbreviated with a tilde</li>
<li><b>\!</b> :     the history number of this command</li>
<li><b>\#</b> :     the command number of this command</li>
<li><b>\$</b> :     if the effective UID is 0, a #, otherwise a $</li>
<li><b>\nnn</b> :   the character corresponding to the octal number nnn</li>
<li><b>\\</b> :     a backslash</li>
<li><b>\[</b> :     begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt</li>
<li><b>\]</b> :     end a sequence of non-printing characters</li>
</ul>
<img src="http://feeds.feedburner.com/~r/phatness/~4/cvStZnxGY_s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://phatness.com/2012/01/mac-terminal-prompt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://phatness.com/2012/01/mac-terminal-prompt/</feedburner:origLink></item>
		<item>
		<title>Add Color to the Mac Terminal Prompt</title>
		<link>http://feedproxy.google.com/~r/phatness/~3/TKlcAcdLdXg/</link>
		<comments>http://phatness.com/2012/01/add-color-to-the-mac-terminal-prompt/#comments</comments>
		<pubDate>Mon, 02 Jan 2012 17:19:00 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[The Setup]]></category>

		<guid isPermaLink="false">http://phatness.com/2012/01/add-color-to-the-mac-terminal-prompt/</guid>
		<description><![CDATA[On Mac OS X, the Terminal output isn&#8217;t colorized by default. Add the following to ~/.bash_profile: export CLICOLOR=1 export LSCOLORS=ExFxCxDxBxegedabagacad And uncheck &#8220;Use bold fonts&#8221; in Terminal preferences under Text. Monaco font in bold looks hideous. While we are at it, make sure you are using the Pro settings scheme as a default. Which you [...]]]></description>
			<content:encoded><![CDATA[<p>On Mac OS X, the Terminal output isn&#8217;t colorized by default.  Add the following to ~/.bash_profile:</p>
<pre>
export CLICOLOR=1
export LSCOLORS=ExFxCxDxBxegedabagacad
</pre>
<p>And uncheck &#8220;Use bold fonts&#8221; in Terminal preferences under Text.  Monaco font in bold looks hideous.</p>
<p>While we are at it, make sure you are using the Pro settings scheme as a default.  Which you use is really personal preference, but if you are a beginner, let&#8217;s start you off on the right foot with Pro.</p>
<img src="http://feeds.feedburner.com/~r/phatness/~4/TKlcAcdLdXg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://phatness.com/2012/01/add-color-to-the-mac-terminal-prompt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://phatness.com/2012/01/add-color-to-the-mac-terminal-prompt/</feedburner:origLink></item>
		<item>
		<title>A better DNS and a better Registrar</title>
		<link>http://feedproxy.google.com/~r/phatness/~3/VFp50faaERU/</link>
		<comments>http://phatness.com/2011/12/a-better-dns-and-a-better-registrar/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 17:08:26 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[Computers]]></category>

		<guid isPermaLink="false">http://phatness.com/?p=2528</guid>
		<description><![CDATA[For as long as I can remember, I&#8217;ve hated the tools out there for managing domains. Except for a brief, very happy period when I hosted my own bind servers, I&#8217;ve been using the services of others. And they all stink. Off the top of my head I&#8217;ve used: Inexpensive Domains GoDaddy Moniker Gandi.net Inexpensive [...]]]></description>
			<content:encoded><![CDATA[<p>For as long as I can remember, I&#8217;ve hated the tools out there for managing domains.  Except for a brief, very happy period when I hosted my own bind servers, I&#8217;ve been using the<br />
 services of others.  And they all stink.  Off the top of my head I&#8217;ve used:</p>
<ul>
<li>Inexpensive Domains</li>
<li>GoDaddy</li>
<li>Moniker</li>
<li>Gandi.net</li>
</ul>
<p>Inexpensive Domains was actually great until they adopted the GoDaddy interface.  GoDaddy is just the suck and is one of the worst internet companies in my opinion.  Moniker looks like someone outsourced the development of the tools and neither party spoke the same language.  I&#8217;ve looked at many others but they aren&#8217;t worth mentioning.</p>
<p>I started using Gandi.net a little over two years ago.  They have been good for a few reasons:</p>
<ul>
<li>You can register international domains</li>
<li>Very powerful DNS management.  Though it is confusing and difficult to get the hang of.</li>
<li>Did I mention flexible DNS?  You can set any TTL you want.  You have complete control of the zone file.  Love it.</li>
</ul>
<p>However, Gandi.net has some negatives.  The management interface is very slow to load.  (Not as bad as GoDaddy, though)  You can&#8217;t auto renew a domain unless you pre-purchase and store funds in your account.  They are in France which triggers a fraud alert every.single.time. I put my card through.  The death stroke is that it takes 15 minutes for a zone file edit to get pushed to their name servers.  Grrr, that one can piss you off during an application upgrade.</p>
<p>And then today, I found <a href="https://dnsimple.com/r/b4094800036505">DNSimple</a>.  These guys look like they have it all.  Auto renewals.  International domains.  Full control over DNS records (though not at the raw zone file level).  And very reasonable pricing.  It&#8217;s cheaper than Amazon&#8217;s DNS service.  Plus they offer RapidSSL certificates.  Finally, a one stop shop.</p>
<p>I just signed up.  I&#8217;m going to give them a test and then migrate the rest  Check them out: <a href="https://dnsimple.com/r/b4094800036505">DNSimple</a>.  If you use that link, you can get 2 free months of service!</p>
<img src="http://feeds.feedburner.com/~r/phatness/~4/VFp50faaERU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://phatness.com/2011/12/a-better-dns-and-a-better-registrar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://phatness.com/2011/12/a-better-dns-and-a-better-registrar/</feedburner:origLink></item>
		<item>
		<title>Relaxing at Work</title>
		<link>http://feedproxy.google.com/~r/phatness/~3/DeMamLvPhyc/</link>
		<comments>http://phatness.com/2011/12/relaxing-at-work-2/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 21:47:55 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[The Setup]]></category>

		<guid isPermaLink="false">http://phatness.com/?p=2511</guid>
		<description />
			<content:encoded><![CDATA[<p><img src="http://phatness.com/wp-content/uploads/2011/12/IMG_30754-675x506.jpg" alt="" title="IMG_3075" width="675" height="506" class="alignleft size-large wp-image-2516" /></p>
<img src="http://feeds.feedburner.com/~r/phatness/~4/DeMamLvPhyc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://phatness.com/2011/12/relaxing-at-work-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://phatness.com/2011/12/relaxing-at-work-2/</feedburner:origLink></item>
		<item>
		<title>Where Groovy &amp; Grails Breaks Down</title>
		<link>http://feedproxy.google.com/~r/phatness/~3/I3_VqXF7tpU/</link>
		<comments>http://phatness.com/2011/12/where-groovy-grails-breaks-down/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 13:55:52 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[Grails]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://phatness.com/?p=2161</guid>
		<description><![CDATA[First off, I do love Groovy &#038; Grails. We&#8217;ve built a product with it: http://bounceoff.com. And I advise any dev shop that is Java focused to stop all development and switch immediately to G&#038;G. However, there are dirty little things that always ruin an otherwise perfect experience. This could be a very long post, detailing [...]]]></description>
			<content:encoded><![CDATA[<p><strong>First off, I do love Groovy &#038; Grails.  We&#8217;ve built a product with it: <a href="http://bounceoff.com">http://bounceoff.com</a>.  And I advise any dev shop that is Java focused to stop all development and switch immediately to G&#038;G.</strong></p>
<p>However, there are dirty little things that always ruin an otherwise perfect experience.  This could be a very long post, detailing all of the tiny nits I have with Groovy &#038; Grails.  It wouldn&#8217;t be fun to write and it wouldn&#8217;t be fun to read.</p>
<p>Instead, I can encapsulate everything that is wrong with Groovy &#038; Grails in one quick example. <span id="more-2161"></span> Take the markup builder in Groovy for example.  Suppose I want to recreate this html:</p>
<pre class="prettyprint linenums lang-html">
&lt;h1&gt;Heading&lt;/h1&gt;
&lt;p&gt;
&lt;a href="mylink"&gt;Go here!&lt;/a&gt;
&lt;/p&gt;
</pre>
<p>This is a very simple example.  Let&#8217;s see how it looks in Groovy:</p>
<pre class="prettyprint linenums lang-js">
def html = new MarkupBuilder()
html.h1 "Heading"
html.p {
      a(href:"mylink") "Go Here!"
}
</pre>
<p>Pretty straight forward right?  Well, it would be if it worked!  You see, you can set attributes of a tag with:</p>
<pre class="prettyprint linenums lang-js">
tagname(attributename:"attributevalue")
</pre>
<p>And the content of a tag with:</p>
<pre class="prettyprint linenums lang-js">
tagname "tag content"
</pre>
<p>But you can&#8217;t use them both at the same time!  The first example doesn&#8217;t work!  You have to use a hidden, UNDOCUMENTED ANYWHERE ON GROOVY.CODEHAUS.ORG namespace and method.  Here is the working example (pay attention to line 5):</p>
<pre class="prettyprint linenums lang-js">
def html = new MarkupBuilder()
html.h1 "Heading"
html.p {
      a(href:"mylink") {
            mkp.yield("Go Here!")
      }
}
</pre>
<p>And that, my friends, describes every single edge case scenario I have hit with Groovy &#038; Grails.  An obscure <strong>mkp</strong> namespace that contains a method <strong>yield</strong> handles the SPECIAL use case where I need both tag attributes and tag body content.</p>
<p>In other words, Groovy &#038; Grails does quite a bit very, very well.  Designed beautifully from a user-of-the-system&#8217;s perspective, you might say.  And then BAM!  You get slapped in the face with a complete shit-head-hack that was tacked on at the last minute in a fit of, &#8220;Oh&#8230; Fuck&#8230;! How are we going to handle THAT one?&#8221;</p>
<img src="http://feeds.feedburner.com/~r/phatness/~4/I3_VqXF7tpU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://phatness.com/2011/12/where-groovy-grails-breaks-down/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://phatness.com/2011/12/where-groovy-grails-breaks-down/</feedburner:origLink></item>
		<item>
		<title>DirecTV Installers</title>
		<link>http://feedproxy.google.com/~r/phatness/~3/k3VRxUB0Gik/</link>
		<comments>http://phatness.com/2011/12/directv-installers/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 10:00:00 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Consumerism]]></category>

		<guid isPermaLink="false">http://phatness.com/?p=2246</guid>
		<description><![CDATA[<h1>Independent Incompetence</h1>

<strong>Before I go any further, I need to point out that the jerk-offs who come out to setup DirecTV are not employees of DirecTV.  They are independent contractors who work for themselves.  Hence, the above title.</strong>


[caption id="attachment_2357" align="alignright" width="300" caption="Notice the carefully placed sticker."]<a href="http://phatness.com/wp-content/uploads/2011/01/IMG_1502.jpg"><img src="http://phatness.com/wp-content/uploads/2011/01/IMG_1502-300x300.jpg" alt="" title="IMG_1502" width="300" height="300" class="size-medium wp-image-2357" /></a>[/caption]

If DirecTV's business model depended on the quality of work of their installers, they would not exist.  Luckily, their service is pretty good once you are up and running.  I'm happy now that everything is over.

What started off as a happy move from Comcast turned into a sloppy mess.  I put off writing this article because I got so pissed every time I sat down to transcribe my notes and crop pictures.  Argh, even after all this time my blood pressure is rising.  This install originally happened in December of 2010.]]></description>
			<content:encoded><![CDATA[<h1>Independent Incompetence</h1>
<p><strong>Before I go any further, I need to point out that the jerk-offs who come out to setup DirecTV are not employees of DirecTV.  They are independent contractors who work for themselves.  Hence, the above title.</strong></p>
<div id="attachment_2357" class="wp-caption alignright" style="width: 310px"><a href="http://phatness.com/wp-content/uploads/2011/01/IMG_1502.jpg"><img src="http://phatness.com/wp-content/uploads/2011/01/IMG_1502-300x300.jpg" alt="" title="IMG_1502" width="300" height="300" class="size-medium wp-image-2357" /></a><p class="wp-caption-text">Notice the carefully placed sticker.</p></div>
<p>If DirecTV&#8217;s business model depended on the quality of work of their installers, they would not exist.  Luckily, their service is pretty good once you are up and running.  I&#8217;m happy now that everything is over.</p>
<p>What started off as a happy move from Comcast turned into a sloppy mess.  I put off writing this article because I got so pissed every time I sat down to transcribe my notes and crop pictures.  Argh, even after all this time my blood pressure is rising.  This install originally happened in December of 2010.<br />
<span id="more-2246"></span></p>
<h2>Online Registration Woes</h2>
<p>I signed up for DirecTV on their website as it offered the best deal.  After completing checkout, I was prompted to choose an installation date.  There is a bug in this part of their site.  If you look at the calendar to select a date, then close the window (to check with your wife on the date&#8230;), when you open the calendar again, the list of available installs moves to the next month.  I.e., I could select December dates the first time.  Next time, I could only select January dates.  The third time, I could only select February dates!  As the original closest install date was still a week away, I hopped on the phone and was able to easily setup an appointment without even talking to anyone.  That was actually very slick.  Way to recover DirecTV!</p>
<h2>Did It Save?</h2>
<p>I choose the very first appointment of the week.  I figured that if your appointment was at 8:00 AM on Monday, there would be no appointments before you that could delay the installer&#8217;s arrival.</p>
<p>I was wrong of course.</p>
<div class="pullquote">
While talking, he pauses, rocks to his side and farts.  He just DROPPED ASS in front of a CLIENT!  But to his credit, he did say excuse me.
</div>
<p>At 9:30 AM I started to worry, let me see what the website says about my appointment.  Well, that&#8217;s interesting, the website has no record of any install appointment.  In fact, it is asking me to schedule one!  Freaking out, I call DirecTV and the representative lets me know that the installation is, indeed, scheduled and that someone will be coming out today between 8 AM and 12 PM.</p>
<p>But none of this really matters when you compare installation scheduling woes with the actual installers who come visit your house.</p>
<h2>Highlights of the Install</h2>
<p><strong>1.</strong>&nbsp; When the installers finally arrived, the weren&#8217;t wearing uniforms.  They didn&#8217;t explain who they were and there was no explanation or apology on why they were late.  They arrived at 1:30 PM!  The appointment was from 8 AM &#8211; 12 PM.</p>
<p><strong>2.</strong>&nbsp; The SD receiver they installed was refurbished and didn&#8217;t work.</p>
<p><strong>3.</strong>&nbsp; When swapping out receivers, the installer was using existing video cables and not leaving the new ones.  What, was he selling them on eBay after an install?</p>
<p><strong>4.</strong>&nbsp; The installer lost the screws for one wall plate after having to borrow my screw driver to do the wall plates.</p>
<p><strong>5.</strong>&nbsp; My A/V equipment was all professionally installed with keystone wall plates and combined data/video/audio jacks.  The installer popped out my wallplates with the keystone jacks and just ran the cable through the hole.</p>
<p><strong>6.</strong>&nbsp; The installers were extremely overweight.  That wouldn&#8217;t bother me, except that they exceeded the weight limit of my attic ladder and took frequent breaks to go out and stand around at their van.  I assume they were taking a cigarette break, but they didn&#8217;t smell of smoke when they came back in.  So maybe they were just resting.  Fine.  Except that they didn&#8217;t finish their job on time.</p>
<p><strong>7.</strong>&nbsp; Any physical alterations of the house were never communicated or asked if it was okay.  Suddenly they are just drilling wherever they feel like.  It didn&#8217;t matter if there was already an established pathway for cabling.</p>
<p><strong>8.</strong>&nbsp; They ask to borrow a step stool, I don&#8217;t have one.  All I have is a 7 foot ladder. &#8220;Well, all I have is a 16 foot ladder. Can I use this chair?&#8221;.  Sigh.</p>
<p><strong>9.</strong>&nbsp; At 5:40 PM, almost 6 hours after their scheduled completion time and there is no word from them on what is happening.  Are they going to finish today?</p>
<p><strong>10.</strong>&nbsp; At 6 PM, they start working on getting the receivers up and running and putting out a picture.  We are all in the living room, myself, the two installers, my wife and two kids.  He is explaining to me the required &#8220;power inserter.&#8221;  <strong>While talking, he pauses, rocks to his side and farts.  He just DROPPED ASS in front of the CLIENT!</strong>  To his credit, he did say excuse me.</p>
<p><strong>11.</strong>&nbsp; The receivers were up and running and then suddenly their van is pulling out of the driveway.  They just left as if they were done, but said nothing to me about the job being finished or not.  That was at 6:40 PM.</p>
<div class="pullquote">
The worst part of all of this is that I felt violated and DirecTV didn&#8217;t care.  I called them up and filed a complaint the day after everything happened.  What was their response?  &#8220;Your complaint has been filed.  We are sorry.&#8221;  Nothing else.  I had invested a lot of time and money into having things exactly right.  These guys came in and shit (or sharted) on everything.
</div>
<section>
<div class="row">
<div class="span11">
<h2>Photos</h2>
<div id="attachment_2357" class="wp-caption alignright" style="width: 310px"><a href="http://phatness.com/wp-content/uploads/2011/01/IMG_1502.jpg"><img src="http://phatness.com/wp-content/uploads/2011/01/IMG_1502-300x300.jpg" alt="" title="IMG_1502" width="300" height="300" class="size-medium wp-image-2357" /></a><p class="wp-caption-text">This should explain it all.</p></div>
<p>Here are some photos I took of the install.  For some, there is a before and after shot.  An hour into the install, I realized these guys are buffoons and I should take some comparison photos.</p>
<p>The picture to the right should explain it all.  How hard is it to put a sticker on that lines up better than this?  I could do a  better job with my eyes closed.
</p></div>
</div>
</section>
<section>
<h2>Exterior</h2>
<div class="row">
<div class="span10">
<div id="attachment_2358" class="wp-caption aligncenter" style="width: 685px"><img src="http://phatness.com/wp-content/uploads/2011/01/IMG_1532-675x504.jpg" alt="" title="IMG_1532" width="675" height="504" class="size-large wp-image-2358" /><p class="wp-caption-text">They didn&#039;t bother sealing the giant hole they drilled through the exterior wall.</p></div>
<div id="attachment_2359" class="wp-caption aligncenter" style="width: 685px"><img src="http://phatness.com/wp-content/uploads/2011/01/IMG_1529-675x504.jpg" alt="" title="IMG_1529" width="675" height="504" class="size-large wp-image-2359" /><p class="wp-caption-text">Their latter knocked out a big chunk of wood.  Notice the elite cable routing.</p></div>
<div id="attachment_2360" class="wp-caption aligncenter" style="width: 685px"><img src="http://phatness.com/wp-content/uploads/2011/01/IMG_1528-675x504.jpg" alt="" title="IMG_1528" width="675" height="504" class="size-large wp-image-2360" /><p class="wp-caption-text">More great cable routing.  Nothing securing the cable, tons of excess.</p></div>
</div>
</div>
</section>
<h2>Interior</h2>
<p>The following are before and after shots of my data/telecomm &#8220;rack&#8221; and cabling runs.</p>
<div class="row">
<div class="span5">
<h3>Before</h3>
</div>
<div class="span1">&nbsp;</div>
<div class="span5">
<h3>After</h3>
</div>
</div>
<div class="row">
<div class="span5">
<a href="http://phatness.com/wp-content/uploads/2011/01/IMG_1494.jpg"><img src="http://phatness.com/wp-content/uploads/2011/01/IMG_1494-300x224.jpg" alt="" title="IMG_1494" width="300" class="size-medium wp-image-2361" /></a><br />
Notice how everything is very well organized.
</div>
<div class="span1">&nbsp;</div>
<div class="span5">
<a href="http://phatness.com/wp-content/uploads/2011/01/IMG_1505.jpg"><img src="http://phatness.com/wp-content/uploads/2011/01/IMG_1505-300x224.jpg" alt="" title="IMG_1505" width="300" class="size-medium wp-image-2366" /></a><br />
Notice the general mess of things. SPLAT.
</div>
</div>
<hr />
<div class="row">
<div class="span5">
<a href="http://phatness.com/wp-content/uploads/2011/01/IMG_1495.jpg"><img src="http://phatness.com/wp-content/uploads/2011/01/IMG_1495-300x224.jpg" alt="" title="IMG_1495" width="300" height="224" class="size-medium wp-image-2362" /></a><br />
Clean.
</div>
<div class="span1">&nbsp;</div>
<div class="span5">
<a href="http://phatness.com/wp-content/uploads/2011/01/IMG_1506.jpg"><img src="http://phatness.com/wp-content/uploads/2011/01/IMG_1506-300x224.jpg" alt="" title="IMG_1506" width="300" height="224" class="size-medium wp-image-2367" /></a><br />
Not Clean: &quot;Just stuff that extra cable back up there!&quot;
</div>
</div>
<hr />
<div class="row">
<div class="span5">
<p><a href="http://phatness.com/wp-content/uploads/2011/01/IMG_1492.jpg"><img src="http://phatness.com/wp-content/uploads/2011/01/IMG_1492-300x224.jpg" alt="" title="IMG_1492" width="300" height="224" class="size-medium wp-image-2363" /></a><br />
Orderly.
</div>
<div class="span1">&nbsp;</div>
<div class="span5">
<p><a href="http://phatness.com/wp-content/uploads/2011/01/IMG_1512.jpg"><img src="http://phatness.com/wp-content/uploads/2011/01/IMG_1512-300x224.jpg" alt="" title="IMG_1512" width="300" height="224" class="size-medium wp-image-2369" /></a><br />
Not Orderly.  Notice the hanging cable in front of the shelf.
</div>
</div>
<hr />
<div class="row">
<div class="span5">
<p><a href="http://phatness.com/wp-content/uploads/2011/01/IMG_1496.jpg"><img src="http://phatness.com/wp-content/uploads/2011/01/IMG_1496-300x224.jpg" alt="" title="IMG_1496" width="300" height="224" class="size-medium wp-image-2364" /></a><br />
Everything in its place.
</div>
<div class="span1">&nbsp;</div>
<div class="span5">
<p><a href="http://phatness.com/wp-content/uploads/2011/01/IMG_1508.jpg"><img src="http://phatness.com/wp-content/uploads/2011/01/IMG_1508-300x224.jpg" alt="" title="IMG_1508" width="300" height="224" class="size-medium wp-image-2368" /></a><br />
&#8220;And let&#8217;s just hang that right here&#8230;&#8221;
</div>
</div>
<hr />
<div class="row">
<div class="span10">
The first and last photos really get to me.  Like, are you kidding me?  &quot;Just stuff that extra cable back up there!&quot;
</div>
</div>
<div class="row">
<div class="span10">
<h2>Receiver Installs</h2>
<p>This is how the wall plates looked before the install.  The piece to note is the bottom, smaller wall plate with the RF/Cable jack sticking out.</p>
<div id="attachment_2370" class="wp-caption aligncenter" style="width: 514px"><img src="http://phatness.com/wp-content/uploads/2011/01/IMG_1488-504x675.jpg" alt="" title="IMG_1488" width="504" height="675" class="size-large wp-image-2370" /><p class="wp-caption-text">The original main TV install.</p></div>
<p>These are the after shots.  What a mess.</p>
<div id="attachment_2371" class="wp-caption aligncenter" style="width: 514px"><img src="http://phatness.com/wp-content/uploads/2011/01/IMG_1509-504x675.jpg" alt="" title="IMG_1509" width="504" height="675" class="size-large wp-image-2371" /><p class="wp-caption-text">All the bunched up black wire is from the power inserter cabling they just threw back there.</p></div>
<div id="attachment_2372" class="wp-caption aligncenter" style="width: 514px"><img src="http://phatness.com/wp-content/uploads/2011/01/IMG_1514-504x675.jpg" alt="" title="IMG_1514" width="504" height="675" class="size-large wp-image-2372" /><p class="wp-caption-text">Notice the where the cable jack originally was, there is now a cable just passing through.  They just punched out the keystone and ran a wire through.</p></div>
<div id="attachment_2373" class="wp-caption aligncenter" style="width: 514px"><img src="http://phatness.com/wp-content/uploads/2011/01/IMG_1515-504x675.jpg" alt="" title="IMG_1515" width="504" height="675" class="size-large wp-image-2373" /><p class="wp-caption-text">The faceplate is missing a screw and the mounting bracket was damaged making it very loose to the touch.</p></div>
</div>
</div>
<div class="row">
<div class="span10">
<h3>Umm, what happened to the screws?</h3>
<div id="attachment_2374" class="wp-caption aligncenter" style="width: 514px"><img src="http://phatness.com/wp-content/uploads/2011/01/IMG_1526-504x675.jpg" alt="" title="IMG_1526" width="504" height="675" class="size-large wp-image-2374" /><p class="wp-caption-text">The downstairs faceplate wasn&#039;t even put back on.  Keystone jack was punched through again.</p></div>
<p>To add insult to injury, the installers felt the need to turn off my furnace (A switch mounted to the side of the furnace).  This was in December and we didn&#8217;t notice until the house dropped to 64 degrees.</p>
<div id="attachment_2375" class="wp-caption aligncenter" style="width: 685px"><img src="http://phatness.com/wp-content/uploads/2011/01/IMG_1511-675x504.jpg" alt="" title="IMG_1511" width="675" height="504" class="size-large wp-image-2375" /><p class="wp-caption-text">It&#039;s 64 F in here?</p></div>
</div>
</div>
<img src="http://feeds.feedburner.com/~r/phatness/~4/k3VRxUB0Gik" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://phatness.com/2011/12/directv-installers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://phatness.com/2011/12/directv-installers/</feedburner:origLink></item>
	</channel>
</rss><!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced

Served from: phatness.com @ 2012-02-02 12:58:38 -->

