<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Crouching tiger, coding monkey</title>
	
	<link>http://blogs.seapine.com/grant</link>
	<description />
	<pubDate>Fri, 31 Oct 2008 05:07:09 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/CrouchingTigerCodingMonkey" type="application/rss+xml" /><item>
		<title>Admission is the first step in recovery</title>
		<link>http://feeds.feedburner.com/~r/CrouchingTigerCodingMonkey/~3/437642865/admission-is-the-first-step-in-recovery.html</link>
		<comments>http://blogs.seapine.com/grant/admission-is-the-first-step-in-recovery.html#comments</comments>
		<pubDate>Fri, 31 Oct 2008 05:07:09 +0000</pubDate>
		<dc:creator>Grant</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blogs.seapine.com/grant/?p=234</guid>
		<description><![CDATA[Sorry about the gap between posts. I&#8217;ve been super busy. I know, that&#8217;s not a good excuse. I&#8217;ll try to do better the future. Really, I will. I&#8217;ll tell you what though, I&#8217;m glad that we&#8217;ve made up.
Hugandkiss.
A few weeks ago I needed a data set to test with. A really big one. Thousands and [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Admission is the first step in recovery", url: "http://blogs.seapine.com/grant/admission-is-the-first-step-in-recovery.html" });</script>]]></description>
			<content:encoded><![CDATA[<p>Sorry about the gap between posts. I&#8217;ve been super busy. I know, that&#8217;s not a good excuse. I&#8217;ll try to do better the future. Really, I will. I&#8217;ll tell you what though, I&#8217;m glad that we&#8217;ve made up.</p>
<p>Hugandkiss.</p>
<p>A few weeks ago I needed a data set to test with. A really big one. Thousands and thousands of files worth of big one. And all those files needed to have lots of revisions. In the end we&#8217;re talking about millions of database rows.</p>
<p>So I wrote a little script to make a bunch of random changes to an old source tree. The rub is I wrote the script the Perl and attached it to the defect. </p>
<p>Not ten minutes later <a href="http://blogs.seapine.com/jeff">Jeff</a> walks in, points toward the door and says, &#8220;Get out.&#8221; Not quite a text book intervention but he tried his best and his heart was in the right place. I knew as I was writing it I didn&#8217;t want to use Perl because it drives me crazy as a language, but it was familiar and easy. Never mind that a month from now I&#8217;ll have better luck translating sanskrit than reading what I wrote. I even said so in the bug report:</p>
<p>&#8220;I wrote a quick Perl script (I know, no one is more sad about it than I am) to edit each checked out file.&#8221;</p>
<p><img src="http://blogs.seapine.com/grant/wp-content/uploads/2008/10/yoda1.png"/></p>
<p>It&#8217;s been about fifteen years since I was first introduced to Perl and I think that&#8217;s about all any one person needs. I need a change.</p>
<p><img src="http://blogs.seapine.com/grant/wp-content/uploads/2008/10/yoda2.png"/></p>
<p>The problem now is what do I use? Python? Ruby? Squirrely academic language du jour? I know the only way I&#8217;ll change permanently is to pick a new one and use it whenever I can on the little junk development tasks.</p>
<p><img src="http://blogs.seapine.com/grant/wp-content/uploads/2008/10/yoda3.png"/></p>
<p>So I put it to you the reader to decide. The only requirements are that it has to run on Mac OS X, is reasonably flexible and is easy to maintain. (Bonus points if it can run on Windows as well.) Whatever has the most votes by Thanksgiving is the one I&#8217;ll use. I&#8217;ll even give periodic updates on my progress, kind of like my own twelve step Perl detoxification program. See, I feel better already. </p>
<p><img src="http://blogs.seapine.com/grant/wp-content/uploads/2008/10/kermit1.png"/></p>
<p><a href="http://sharethis.com/item?&wp=2.5.1&amp;publisher=a1f5b042-fd30-4691-ad22-9713d9eeba1f&amp;title=Admission+is+the+first+step+in+recovery&amp;url=http%3A%2F%2Fblogs.seapine.com%2Fgrant%2Fadmission-is-the-first-step-in-recovery.html">ShareThis</a></p><img src="http://feeds.feedburner.com/~r/CrouchingTigerCodingMonkey/~4/437642865" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.seapine.com/grant/admission-is-the-first-step-in-recovery.html/feed</wfw:commentRss>
		<feedburner:origLink>http://blogs.seapine.com/grant/admission-is-the-first-step-in-recovery.html</feedburner:origLink></item>
		<item>
		<title>The Art of Waiting</title>
		<link>http://feeds.feedburner.com/~r/CrouchingTigerCodingMonkey/~3/374619241/the-art-of-waiting.html</link>
		<comments>http://blogs.seapine.com/grant/the-art-of-waiting.html#comments</comments>
		<pubDate>Mon, 25 Aug 2008 22:19:44 +0000</pubDate>
		<dc:creator>Grant</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://blogs.seapine.com/grant/?p=231</guid>
		<description><![CDATA[My family consists of myself, my wife, my soon to be four year old daughter and my approximately six month old son. Not long ago we were getting the group ready to go somewhere, although I don&#8217;t recall where. (Yes, I&#8217;m getting old.)
Anyhow, the situation devolved into me sitting on the couch shoes on feet [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "The Art of Waiting", url: "http://blogs.seapine.com/grant/the-art-of-waiting.html" });</script>]]></description>
			<content:encoded><![CDATA[<p>My family consists of myself, my wife, my soon to be four year old daughter and my approximately six month old son. Not long ago we were getting the group ready to go somewhere, although I don&#8217;t recall where. (Yes, I&#8217;m getting old.)</p>
<p>Anyhow, the situation devolved into me sitting on the couch shoes on feet and keys in hand holding my son who was also completely dressed and ready to go. My daughter was rumaging through the shoe box trying to decide what shoes to wear and my wife was doing two or three different things at once in at least two different rooms in the house.</p>
<p>He looked up at me with a big pair of blue eyes asking without words because, well he can&#8217;t talk, &#8220;What in the world is taking them so long to get ready?&#8221; To that I looked down at him, conjurned up my best I&#8217;m-about-to-impart-fatherly-wisdom voice and said:</p>
<p>&#8220;Boy. Sometimes you just have to wait. There&#8217;s no good reason why and there&#8217;s nothing you can do about it.&#8221;</p>
<p>&#8220;Also, save your pennies so you can buy an iPhone. At least then you&#8217;ll have something to play around with while you&#8217;re waiting.&#8221;</p>
<p><img src="http://blogs.seapine.com/grant/wp-content/uploads/2008/08/waiting.png"/></p>
<p>I was reminded of this story today when I was setting up a test database. You see I wanted to gauge the level of suckiness of my code when confronted with a massive data set. The problem was that I needed to copy the test data from a network share onto my local machine and that it consisted of a zillion little files. Transferring one huge file, that&#8217;s no problem. It comes down in a few minutes just like downloading a <del datetime="2008-08-25T21:16:22+00:00">bootleg movie</del>, err, business task critical ISO image. Transferring loads and loads of little files though means it is time to go take a walk. Or make a sandwich. Or paint your house.</p>
<p>Worst part about it is that there was nothing I could do to make it go faster. I suppose if I was feeling really abmitious I could have hacked my way into the datacenter, pulled the drive from the server, somehow enclosed it and attached it directly to my Macbook Pro, and then outrun the IT staff. Not a great solution, especially considering that even if I pulled a <a href="http://sports.espn.go.com/oly/summer08/fanguide/athlete?athlete=52386">Usain Bolt</a> on them I&#8217;d still be greeted by a pink slip at the podium.</p>
<p>So as I sat, and as I waited, I tried to think of other similar software development tasks that require you to just sit around and wait. Much to my surprise that was the only one I could immediately think of. Even compilation, especially if you are like me and get to watch C++ chug, bend, and contort itself into binary form, isn&#8217;t that bad thanks to distributed build tools like <a href="http://www.xoreax.com/solutions_vs.htm">Incredibuild</a> or <a href="http://developer.apple.com/documentation/DeveloperTools/Conceptual/XcodeWorkspace/980-Xcode_Preferences/chapter_11_section_5.html">Xcode&#8217;s support of distcc.</a> Most other problems have been solved by Moore&#8217;s Law, although as shown by my trusty laptop I have a tendency to agree with Wil Shipley about running your code on older development machines:</p>
<p><em><strong>&#8220;IL: Finally, what is/are your main machine(s)? Hardware, software, processor—all the gory details. We&#8217;re geeks; we like this kind of stuff.</strong></p>
<p>WS: At the café every day I still use a 1.67 GHz G4 PowerBook, with 1.5 GB of RAM. I&#8217;m intentionally waiting to buy a Core 2 Duo machine until I ship Delicious Library 2, because Delicious Library 2 runs so fast on the Core 2 Duos it would be unfair for me to use one day-to-day—I&#8217;d never optimize my code, and people stuck on old PowerBooks would hate me. I know a company where they recently bought every engineer a 30&#8243; display, and my thought was, &#8220;Oh, man, it&#8217;s gonna be hard to use their apps on a portable&#8230; .&#8221; There are so many problems you don&#8217;t solve unless they are bothering you personally. I need to eat the same caviar I feed my customers. (What, you think I&#8217;d feed them dog food?)&#8221;</p>
<p><a href="http://arstechnica.com/journals/apple.ars/2006/12/13/6275">&#8212; Ars Technica interview with Wil Shipley of Delicious Monster</a></em></p>
<p>Well, the progress bar is a little closer to done. I&#8217;m going to get something eat. Come to think of it the house could use a little more color&#8230;</p>
<p><a href="http://sharethis.com/item?&wp=2.5.1&amp;publisher=a1f5b042-fd30-4691-ad22-9713d9eeba1f&amp;title=The+Art+of+Waiting&amp;url=http%3A%2F%2Fblogs.seapine.com%2Fgrant%2Fthe-art-of-waiting.html">ShareThis</a></p><img src="http://feeds.feedburner.com/~r/CrouchingTigerCodingMonkey/~4/374619241" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.seapine.com/grant/the-art-of-waiting.html/feed</wfw:commentRss>
		<feedburner:origLink>http://blogs.seapine.com/grant/the-art-of-waiting.html</feedburner:origLink></item>
		<item>
		<title>Must have software and tools (Mac OS X Edition)</title>
		<link>http://feeds.feedburner.com/~r/CrouchingTigerCodingMonkey/~3/363511551/must-have-software-and-tools-mac-os-x-edition.html</link>
		<comments>http://blogs.seapine.com/grant/must-have-software-and-tools-mac-os-x-edition.html#comments</comments>
		<pubDate>Wed, 13 Aug 2008 04:03:46 +0000</pubDate>
		<dc:creator>Grant</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://blogs.seapine.com/grant/?p=230</guid>
		<description><![CDATA[A couple of weeks ago Tim posted his must have software and tools. Always one to steal a good idea, and wanting to balance out his Windows focus, here&#8217;s my list.
General Apps

Safari - I&#8217;m not a huge browser plugin guy and Safari is pretty darn fast.

Firefox - The above being said, having a backup browser [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Must have software and tools (Mac OS X Edition)", url: "http://blogs.seapine.com/grant/must-have-software-and-tools-mac-os-x-edition.html" });</script>]]></description>
			<content:encoded><![CDATA[<p>A couple of weeks ago Tim posted his <a href="http://www.techtoolblog.com/archives/must-have-software-and-tools">must have software and tools.</a> Always one to steal a good idea, and wanting to balance out his Windows focus, here&#8217;s my list.</p>
<p><strong>General Apps</strong>
<p>
<a href="http://www.apple.com/safari/">Safari</a> - I&#8217;m not a huge browser plugin guy and Safari is pretty darn fast.
<p>
<a href="http://www.mozilla.com/en-US/firefox/">Firefox</a> - The above being said, having a backup browser is a good thing.
<p>
<a href="http://www.apple.com/macosx/features/mail.html">Mail.app</a> - Solid mail client with excellent free form searching.
<p>
<a href="http://www.apple.com/macosx/features/ichat.html">iChat</a> - I never got into Adium because this guy has always worked for me.
<p>
<a href="http://www.apple.com/macosx/features/300.html#ical">iCal</a> - Really looking forward to true Exchange integration with Snow Leopard. Google Calendar integration means I actually know what is scheduled at home now.
<p>
<a href="http://www.apple.com/itunes/">iTunes</a> - Does a wonderful job with podcasts and video podcasts.
<p>
<a href="http://www.bloglines.com">Bloglines</a> - All my RSS in the same place on any computer.
<p>
<a href="http://twitter.com">Twitter</a> - Still not sure why I like it so much.
<p>
<a href="http://www.omnigroup.com/applications/omnifocus/">OmniFocus</a> - No program has saved me more often than OmniFocus. Plus it integrates perfectly with Mail.app which makes Inbox Zero easy.
<p>
<a href="http://www.omnigroup.com/applications/omnigraffle/">OmniGraffle</a> - People always ask if there is a Visio for the Mac. The question is wrong. It should be is there an OmniGraffle for Windows? (Answer: No.)
<p>
<a href="http://plasq.com/comiclife/">Comic Life</a> - If you have ever read one of my design documents you&#8217;ll know how much I love this one.
<p>
<a href="http://www.microsoft.com/mac/products/word2008/default.mspx#/document_elements/">MS Word</a> - Word is the standard for business documents.
<p>
<a href="http://www.apple.com/iwork/keynote/">Keynote</a> - All my presentations and screencasts are done in Keynote. The animation support alone is worth the price of admission.
<p>
<a href="http://www.ambrosiasw.com/utilities/snapzprox/">Snapz Pro X</a> - Speaking of screencasts, this is my screen capture program&#8230;
<p>
<a href="http://www.apple.com/quicktime/pro/">QuickTime Pro</a> - &#8230;and since I&#8217;m unable to do anything in a single take you gotta edit.
<p>
<a href="http://www.barebones.com/products/bbedit/">BBEdit</a> - As far as editors go BBEdit is old school. Sometimes it is good to be old school.
<p>
<a href="http://www.parallels.com">Parallels</a> - For those times when you have to run Windows.
<p>
<a href="http://www.panic.com/transmit/">Transmit</a> - An FTP program that costs money? I know, but it makes up for it by being brilliant.
<p>
<strong>Developer Tools</strong>
<p>
<a href="http://www.apple.com/macosx/technology/unix.html">Terminal.app</a> - Before OS X I was on Linux/Unix. You can give a guy a great UI but you can never take away the command line.
<p>
<a href="http://www.seapine.com/ttpro.html">TestTrack Pro</a> - I have used this just about every day for the last seven or eight years.
<p>
<a href="http://www.seapine.com/surroundscm.html">Surround SCM</a> - Well, since I kinda work on it and all&#8230;
<p>
<a href="http://www.apple.com/macosx/developertools/xcode.html">Xcode</a> - It baffles people coming from Visual Studio world but it has really turned into a nice IDE.
<p>
<a href="http://www.apple.com/macosx/developertools/instruments.html">Instruments</a> - Because sometimes we all leak memory.
<p>
<a href="http://developer.apple.com/tools/sharkoptimize.html">Shark</a> - And sometimes we just run slow.
<p>
<a href="http://unittest-cpp.sourceforge.net/">UnitTest++</a> - Best cross platform C++ unit testing framework I have found.
<p>
<a href="http://buildbot.net/trac">BuildBot</a> - Nothing more fun than getting emails about broken CI builds. Wait, there&#8217;s lots of things more fun than that.<br />
<p><a href="http://sharethis.com/item?&wp=2.5.1&amp;publisher=a1f5b042-fd30-4691-ad22-9713d9eeba1f&amp;title=Must+have+software+and+tools+%28Mac+OS+X+Edition%29&amp;url=http%3A%2F%2Fblogs.seapine.com%2Fgrant%2Fmust-have-software-and-tools-mac-os-x-edition.html">ShareThis</a></p><img src="http://feeds.feedburner.com/~r/CrouchingTigerCodingMonkey/~4/363511551" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.seapine.com/grant/must-have-software-and-tools-mac-os-x-edition.html/feed</wfw:commentRss>
		<feedburner:origLink>http://blogs.seapine.com/grant/must-have-software-and-tools-mac-os-x-edition.html</feedburner:origLink></item>
		<item>
		<title>A memory leak in the alluvial dampers</title>
		<link>http://feeds.feedburner.com/~r/CrouchingTigerCodingMonkey/~3/342179129/a-memory-leak-in-the-alluvial-dampers.html</link>
		<comments>http://blogs.seapine.com/grant/a-memory-leak-in-the-alluvial-dampers.html#comments</comments>
		<pubDate>Tue, 22 Jul 2008 04:46:22 +0000</pubDate>
		<dc:creator>Grant</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blogs.seapine.com/grant/?p=229</guid>
		<description><![CDATA[The last few days I&#8217;ve been spending some quality time with my friend Shark doing a lot of performance testing. I actually kind of like that sort of work. I also have a feeling I was dropped a lot as a child.
Anyhow, as I was running some scenarios I had a bit of an epiphany. [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "A memory leak in the alluvial dampers", url: "http://blogs.seapine.com/grant/a-memory-leak-in-the-alluvial-dampers.html" });</script>]]></description>
			<content:encoded><![CDATA[<p>The last few days I&#8217;ve been spending some quality time with my friend <a href="http://blogs.seapine.com/grant/were-gonna-need-a-bigger-boat-or-a-practical-example-of-apple-shark-usage.html">Shark</a> doing a lot of performance testing. I actually kind of like that sort of work. I also have a feeling I was dropped a lot as a child.</p>
<p>Anyhow, as I was running some scenarios I had a bit of an epiphany. In fact, the more I thought about it the more I was amazed that I hadn&#8217;t thought of this before.</p>
<p>C++ is the Millennium Falcon.</p>
<p><img src="http://blogs.seapine.com/grant/wp-content/uploads/2008/07/falcon.jpg"/></p>
<p>Remember that childhood head trauma bit? Seems fitting right about now doesn&#8217;t it. Let&#8217;s look at a comparison though.</p>
<p><strong>Are they both fast?</strong></p>
<ul>
<li>C++: My Shark tests say so and people always ask if Java can be as fast as C++.</li>
<li>Falcon: It did make the Kessel Run in less than twelve parsecs after all.</li>
</ul>
<p><strong>Are they both ugly looking?</strong></p>
<ul>
<li>C++: It&#8217;s no Perl, but I wouldn&#8217;t expect it to win any beauty pageants soon.</li>
<li>Falcon: <a href="http://en.wikipedia.org/wiki/Millennium_Falcon">Wikipedia</a> says it was inspired by a hamburger with an olive beside it. A hamburger.</li>
</ul>
<p><strong>Are they both powerful?</strong></p>
<ul>
<li>C++: Piles and piles and piles of C++ code run all over the world on about every platform imaginable.</li>
<li>Falcon: It blew up Death Star #2.</li>
</ul>
<p><em>Note: I admit that blowing up Death Star #2 isn&#8217;t really as impressive as it sounds. The first Death Star mission was repeatedly labeled as suicide and was only successful because of the intervention of a quasi-religious miracle. The second one had what amounted to a four lane highway built in leading to the biggest &#8220;Don&#8217;t hit me here or I&#8217;ll explode&#8221; target since King Hippo.</em></p>
<p><img src="http://blogs.seapine.com/grant/wp-content/uploads/2008/07/kinghippo.jpg"/></p>
<p><em>That all being said, it was still a noteworthy accomplishment.</em></p>
<p><strong>Do they both fail in spectacular ways at the worst possible time?</strong></p>
<ul>
<li>C++: It&#8217;s author has said, &#8220;In C++ it&#8217;s harder to shoot yourself in the foot, but when you do, you blow off your whole leg.&#8221;</li>
<li>Falcon: Routinely shuts down requiring a reboot by punching the doorframe.</li>
</ul>
<p><strong>Do they both have big, hairy, incomprehensible partners?</strong></p>
<ul>
<li>Falcon: Chewbacca the Wookie.</li>
<li>C++: The STL.</li>
</ul>
<p><img src="http://blogs.seapine.com/grant/wp-content/uploads/2008/07/stl_wookie.png"/></p>
<p>You have to admit, the similarities are pretty startling. </p>
<p>Oh, and <a href="http://en.wikipedia.org/wiki/Greedo">Han shot first.</a></p>
<p><a href="http://sharethis.com/item?&wp=2.5.1&amp;publisher=a1f5b042-fd30-4691-ad22-9713d9eeba1f&amp;title=A+memory+leak+in+the+alluvial+dampers&amp;url=http%3A%2F%2Fblogs.seapine.com%2Fgrant%2Fa-memory-leak-in-the-alluvial-dampers.html">ShareThis</a></p><img src="http://feeds.feedburner.com/~r/CrouchingTigerCodingMonkey/~4/342179129" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.seapine.com/grant/a-memory-leak-in-the-alluvial-dampers.html/feed</wfw:commentRss>
		<feedburner:origLink>http://blogs.seapine.com/grant/a-memory-leak-in-the-alluvial-dampers.html</feedburner:origLink></item>
		<item>
		<title>Eating Klondike bars in the Arctic, with the polar bears</title>
		<link>http://feeds.feedburner.com/~r/CrouchingTigerCodingMonkey/~3/330781111/eating-klondike-bars-in-the-arctic-with-the-polar-bears.html</link>
		<comments>http://blogs.seapine.com/grant/eating-klondike-bars-in-the-arctic-with-the-polar-bears.html#comments</comments>
		<pubDate>Wed, 09 Jul 2008 14:26:28 +0000</pubDate>
		<dc:creator>Grant</dc:creator>
		
		<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://blogs.seapine.com/grant/?p=220</guid>
		<description><![CDATA[So apparently our guy Yan has a minor, minor, minor (I mean really minor) role in his friend&#8217;s contest video. It is a stretch role for him, &#8220;Friend eating Klondike bar #4.&#8221; I&#8217;d say his performance is solid but not spectacular. I don&#8217;t think he brought the character to life like &#8220;Friend eating Klondike bar [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Eating Klondike bars in the Arctic, with the polar bears", url: "http://blogs.seapine.com/grant/eating-klondike-bars-in-the-arctic-with-the-polar-bears.html" });</script>]]></description>
			<content:encoded><![CDATA[<p>So apparently our guy <a href="http://blogs.seapine.com/yan">Yan</a> has a minor, minor, minor (I mean really minor) role in his friend&#8217;s contest video. It is a stretch role for him, &#8220;Friend eating Klondike bar #4.&#8221; I&#8217;d say his performance is solid but not spectacular. I don&#8217;t think he brought the character to life like &#8220;Friend eating Klondike bar #1&#8243; did.</p>
<p>Anyhow I hope his buddy wins.</p>
<p>And I hope I can get the song out of my head.</p>
<p>Click to see:<br />
<a href="http://www.klondikecontest.com/videos.aspx?ftaf=435"><img src="http://blogs.seapine.com/grant/wp-content/uploads/2008/07/picture-2.png" alt="" /></a></p>
<p><a href="http://sharethis.com/item?&wp=2.5.1&amp;publisher=a1f5b042-fd30-4691-ad22-9713d9eeba1f&amp;title=Eating+Klondike+bars+in+the+Arctic%2C+with+the+polar+bears&amp;url=http%3A%2F%2Fblogs.seapine.com%2Fgrant%2Feating-klondike-bars-in-the-arctic-with-the-polar-bears.html">ShareThis</a></p><img src="http://feeds.feedburner.com/~r/CrouchingTigerCodingMonkey/~4/330781111" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.seapine.com/grant/eating-klondike-bars-in-the-arctic-with-the-polar-bears.html/feed</wfw:commentRss>
		<feedburner:origLink>http://blogs.seapine.com/grant/eating-klondike-bars-in-the-arctic-with-the-polar-bears.html</feedburner:origLink></item>
		<item>
		<title>Life.isTooShort(true);</title>
		<link>http://feeds.feedburner.com/~r/CrouchingTigerCodingMonkey/~3/316483898/lifeistooshorttrue.html</link>
		<comments>http://blogs.seapine.com/grant/lifeistooshorttrue.html#comments</comments>
		<pubDate>Fri, 20 Jun 2008 22:24:04 +0000</pubDate>
		<dc:creator>Grant</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Happiness]]></category>

		<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://blogs.seapine.com/grant/?p=218</guid>
		<description><![CDATA[So I have two interesting pieces of news.
1. I know now for sure that a Honda Civic can be rear ended by a Ford F-150 and drive away with far less damage. In fact, the truck couldn&#8217;t drive away period.
2. I&#8217;m a developer again.
The first item is pretty self-explanatory. The second requires a bit of [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Life.isTooShort(true);", url: "http://blogs.seapine.com/grant/lifeistooshorttrue.html" });</script>]]></description>
			<content:encoded><![CDATA[<p>So I have two interesting pieces of news.</p>
<p>1. I know now for sure that a Honda Civic can be rear ended by a Ford F-150 and drive away with far less damage. In fact, the truck couldn&#8217;t drive away period.</p>
<p>2. I&#8217;m a developer again.</p>
<p>The first item is pretty self-explanatory. The second requires a bit of a story.</p>
<p>A few weeks ago I went to a funeral for my wife&#8217;s Uncle Craig. Out of the clear blue sky he had a heart attack even though he had no previous heart problems. Just days before we had been up for his daughter&#8217;s wedding where he walked her down the aisle. For the funeral she had to be called back from her honeymoon in Jamaica. </p>
<p>He was only 52.</p>
<p>Too young, too early, too unexpected, too unfair, too badly timed, all these things apply. I&#8217;ve been to funerals before but this particular one stood out. This was the first one that I&#8217;ve been to since I&#8217;ve had my own kids. Looking over at his kids, even though they are adults now, I couldn&#8217;t help but think of mine. </p>
<p>I couldn&#8217;t help but think that life is too short.</p>
<p>When I first met Craig about 15 years ago he wasn&#8217;t much older than I am now. It was clear from the beginning though that he was a stand up guy. Even though the extended family is large and a gathering, like say Christmas, is best described as &#8220;freaking humongous&#8221; he always had time to come say hello even though I was just the boyfriend of one of his many nieces.</p>
<p>Over the years I got a chance to watch his kids grow up. His daughter is now a beautiful school teacher and his sons are the types of guys that you want to be in your crew, the kind that you know will have your back. I hope my kids turn out that well some day. I hope I do as good a job as he did. </p>
<p>While I hate to think about it, watching all this made me ponder,  &#8220;What if all I have left is twenty years?&#8221; I remember when that seemed like a long time. Somehow it doesn&#8217;t seem like that anymore. It&#8217;s cliché to say, &#8220;Live each day as your last&#8221; so I won&#8217;t do that. Besides, that&#8217;s just not possible. What I will say is that you shouldn&#8217;t live each day doing something that you aren&#8217;t truly happy doing.</p>
<p>It is with all this in mind that I moved back to writing software. It has been an interesting year in the marketing/strategy world and I now know that my brain is not wired for that type of work. Thinking about positioning and messaging are the sorts of things that wake some people up in the morning, including some people that are very good at it here. I could do the work but it wasn&#8217;t my ambition. It isn&#8217;t who I am. And there&#8217;s not enough time to spend doing something that isn&#8217;t you.</p>
<p>Life is too short.</p>
<p>So I raise a beer to Uncle Craig. Goodbye, God speed, and thanks for inspiring me to try to find happiness.</p>
<p><img src="http://blogs.seapine.com/grant/wp-content/uploads/2008/06/unclecraig.jpg"/><br />
Craig Snyder (1955-2008)</p>
<p><a href="http://sharethis.com/item?&wp=2.5.1&amp;publisher=a1f5b042-fd30-4691-ad22-9713d9eeba1f&amp;title=Life.isTooShort%28true%29%3B&amp;url=http%3A%2F%2Fblogs.seapine.com%2Fgrant%2Flifeistooshorttrue.html">ShareThis</a></p><img src="http://feeds.feedburner.com/~r/CrouchingTigerCodingMonkey/~4/316483898" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.seapine.com/grant/lifeistooshorttrue.html/feed</wfw:commentRss>
		<feedburner:origLink>http://blogs.seapine.com/grant/lifeistooshorttrue.html</feedburner:origLink></item>
		<item>
		<title>Dance paper dance</title>
		<link>http://feeds.feedburner.com/~r/CrouchingTigerCodingMonkey/~3/310383863/dance-paper-dance.html</link>
		<comments>http://blogs.seapine.com/grant/dance-paper-dance.html#comments</comments>
		<pubDate>Thu, 12 Jun 2008 13:47:47 +0000</pubDate>
		<dc:creator>Grant</dc:creator>
		
		<category><![CDATA[Paper]]></category>

		<category><![CDATA[Writing]]></category>

		<guid isPermaLink="false">http://blogs.seapine.com/grant/?p=216</guid>
		<description><![CDATA[There’s a brand new whitepaper available that was written by Keith, one of our actual writers. (As opposed to the monkey with a keyboard that posts to this blog.) He knew all about the single space nonsense that messed me up for a solid week and can literally make words dance on a page.
Darnedest thing [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Dance paper dance", url: "http://blogs.seapine.com/grant/dance-paper-dance.html" });</script>]]></description>
			<content:encoded><![CDATA[<p>There’s a brand new <a href="http://www.seapine.com/wp.php?id=26">whitepaper</a> available that was written by Keith, one of our actual writers. (As opposed to the monkey with a keyboard that posts to this blog.) He knew all about the <a href="http://blogs.seapine.com/grant/having-your-world-turned-upside-down-by-punctuation.html">single space nonsense</a> that messed me up for a solid week and can literally make words dance on a page.</p>
<p>Darnedest thing I ever saw, words dancing like that. And to the <a href="http://www.youtube.com/watch?v=0nbMLOr0tHU">Cha-Cha Slide</a> no less. </p>
<p>Anyhow the paper has the catchy title of <a href="http://www.seapine.com/wp.php?id=26">&#8220;Quality-Centric Application Lifecycle Management in a Down Economy&#8221;</a> which given the economic woes of the country at the moment is rather timely. It’s super good, but my favorite part is this section:</p>
<blockquote><p>&#8220;In a slow economy, businesses carefully consider every purchase, looking for ways to control costs and squeeze as much value as possible out of the money they spend. While flaws in software are always a concern, companies are less patient with them when cash is tight. </p>
<p>Releasing poor quality software builds the expectation that initial releases will be buggy. If a release date slips several times, new and potential customers may assume there is a problem with quality and will be reluctant to buy when the software is finally released. Even a single sub-par release can sow the seeds of doubt. Once doubt creeps into the minds of existing customers, they may resist purchasing new releases, preferring to allow other early adopters to work through the problems, or worse, they may decide not to buy at all.&#8221;</p></blockquote>
<p>That’s a simple point, one that we don’t often think about, but it is absolutely true. How many times have you said you’ll wait for the first dot release or service pack before upgrading? Or perhaps wait for the second model year of a car? Or how about the 3G version of a wireless phone that you <a href="http://www.apple.com/iphone">may have seen in the news recently?</a></p>
<p>Why do we do this? Part of it may be that new products don’t have all the features we want. But an even bigger part is that it is ridiculously easy to assume the first version will be buggy. Heaven help you if your products actually live up this stereotype because now it becomes an uphill (read: expensive) climb to get customers to trade their money for your stuff when a new release hits. </p>
<p>And that’s what it is really all about in the business of software. You spend all this time and money creating this new version and what you really want is for customers to buy it. Writing software is expensive and it is the selling of it that covers all those costs. If you have to write a dot release before the cash starts coming in then now you’re writing on credit, and playing with credit is not the optimal situation in down economic times. Sure winning the Google-just-bought-me-do-I-buy-the-black-ferrari-or-red-one-heck-I’ll-just-get-both-why-chose lottery might be a plan where credit spending is a good idea but those are some long odds and it’s a risky bet when it doesn’t come through. Like the shutter the doors and sell off the assets kind of risky or find a new gig kind of risky.</p>
<p>Anyhow there is lots of other good stuff in the paper besides this and I won’t ruin the rest of the story by giving it all away here. Well, I will say this, none of the words in this one actually dance. (I blame the PDF format more than anything.)</p>
<p><a href="http://sharethis.com/item?&wp=2.5.1&amp;publisher=a1f5b042-fd30-4691-ad22-9713d9eeba1f&amp;title=Dance+paper+dance&amp;url=http%3A%2F%2Fblogs.seapine.com%2Fgrant%2Fdance-paper-dance.html">ShareThis</a></p><img src="http://feeds.feedburner.com/~r/CrouchingTigerCodingMonkey/~4/310383863" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.seapine.com/grant/dance-paper-dance.html/feed</wfw:commentRss>
		<feedburner:origLink>http://blogs.seapine.com/grant/dance-paper-dance.html</feedburner:origLink></item>
		<item>
		<title>Customer support, mother-in-law, you can run but you can’t hide</title>
		<link>http://feeds.feedburner.com/~r/CrouchingTigerCodingMonkey/~3/305369085/customer-support-mother-in-law-you-can-run-but-you-cant-hide.html</link>
		<comments>http://blogs.seapine.com/grant/customer-support-mother-in-law-you-can-run-but-you-cant-hide.html#comments</comments>
		<pubDate>Thu, 05 Jun 2008 15:25:18 +0000</pubDate>
		<dc:creator>Grant</dc:creator>
		
		<category><![CDATA[Customer support]]></category>

		<category><![CDATA[Quality]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.seapine.com/grant/?p=215</guid>
		<description><![CDATA[This past Christmas my mother-in-law bought my father-in-law a new notebook computer. It was intended to replace his current laptop, which was so far beyond long in the tooth that it was being sized for dentures. (It was a Pentium II running Windows ME. No, seriously.)
His computing needs are very modest so she chose a [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Customer support, mother-in-law, you can run but you can&#8217;t hide", url: "http://blogs.seapine.com/grant/customer-support-mother-in-law-you-can-run-but-you-cant-hide.html" });</script>]]></description>
			<content:encoded><![CDATA[<p>This past Christmas my mother-in-law bought my father-in-law a new notebook computer. It was intended to replace his current laptop, which was so far beyond long in the tooth that it was being sized for dentures. (It was a Pentium II running Windows ME. No, seriously.)</p>
<p>His computing needs are very modest so she chose a budget model from a large well-known manufacturer that was a huge step up from the current one. So long as it was able to accomplish three tasks life would be good.</p>
<p>    1.	Connect to AOL via a modem because they live in an area that is unreachable by cable or DSL.<br />
    2.	Play Windows card games<br />
    3.	Run an old version of Excel to keep track of some finance stuff and some sports statistics.</p>
<p>So that’s the stage, we’re not talking giant needs in computation here. The problem is that after a few months the new computer stopped being able to accomplish item #1. The internal modem would no longer detect a dial tone, and even stranger an external USB modem had the same problem. Blame whomever you want, Vista, the manufacturer, Congress, the French, it makes no difference. The bottom line here is that the thing simply doesn’t work.</p>
<p>After I took a look at it, having to resurrect knowledge of modems that I had purged from memory years ago, I came to the conclusion that they’d need to use the warranty and contact the manufacturer to get it fixed. They’ve had the machine for  eight weeks now. The call center in India kept explaining that it was at “our highest level of priority” to the point where the mother-in-law gave up and called the corporate office looking for help. Now she has the direct number and name of a guy there and I’m not even sure he’s in the support division. </p>
<p>My advice to him, get it fixed however you can. Ship a brand new machine if you have to. She’s not shy and is very persistent. If she claims she’ll call you, your boss, your mom, your dog, your cousin’s boyfriend’s college roommate twice removed she’ll do it. I cannot stress to you enough the seriousness of your situation.</p>
<p>What this whole story really highlights is the myth of customer support or rather the myth that it is nothing but a loss vehicle at a company. Sure it can be expensive to have competent, trained people working in support. It can also look mighty tempting to cut costs here. But here’s the trick, nothing, and I repeat nothing, will stand out more in the minds of your customers that good customer support. On the flip side, you can spend as much time as you want with whatever grand methodology you choose creating the most bug free software in the entire wide world but it can all fall apart with poor customer support.</p>
<p>When I had a DVD drive go bad in an iBook the guy at the Apple store immediately offered to swap out the entire computer. When I had a heat shield pull off, out of warranty, on an Acura I used to own the dealer replaced it for free and gave me a loaner on the spot. These are examples of places where I will continue to spend obscene amounts of money thanks to support. I’ll also recommend them to anyone I know that is looking for such a thing.</p>
<p>Heck, one time I even wrote to <a href="http://www.delicious-monster.com/">Wil Shipley of Delicious Monster</a> with a question and I wasn’t even a customer of his. It didn’t matter, fifteen minutes later I got a response. That reminds me, I need to go pick up a copy of <a href="http://www.delicious-monster.com/buy.php">Delicious Library 2.</a></p>
<p>At the same time when I had a furnace go out in the dead of winter and called their “on call” guy to come fix it I could tell that his claims of being booked for the night were false. This was because, well, I COULD HEAR THE NOISE AT THE BAR IN BACKGROUND. </p>
<p>I’ll bet you can guess whether or not they got the business when the furnace finally kicked the bucket two years later.</p>
<p>I don’t usually talk about the internal workings at Seapine but in the case of our support organization I’ll make an exception. I do this largely because of the level of seriousness we take it since we have found, over and over again through interaction with paying customers, that it is a competitive advantage for us. All of our support people are full time employees and all of them actually know the products they support. We don’t have call scripts because that encourages the idea that you can plug just anyone into that role so long as they can read. The entire organization is overseen directly by our VP of Quality so he is responsible for internal testing before release and the ongoing help after release. We do follow up surveys with customers that call or email in making sure that the level of support they received was satisfactory. The majority of them are even located at the same physical facility as the developers. It is a huge deal for us, something that we can provide that others choose not to. It has without doubt made us far more money that it costs. </p>
<p>FAR more money. </p>
<p>Do you know the best thing though? It fulfills the modern American dream. It keeps mother-in-laws from repeatedly calling. (I joke with love. Really. No need to call.)</p>
<p><a href="http://sharethis.com/item?&wp=2.5.1&amp;publisher=a1f5b042-fd30-4691-ad22-9713d9eeba1f&amp;title=Customer+support%2C+mother-in-law%2C+you+can+run+but+you+can%26%238217%3Bt+hide&amp;url=http%3A%2F%2Fblogs.seapine.com%2Fgrant%2Fcustomer-support-mother-in-law-you-can-run-but-you-cant-hide.html">ShareThis</a></p><img src="http://feeds.feedburner.com/~r/CrouchingTigerCodingMonkey/~4/305369085" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.seapine.com/grant/customer-support-mother-in-law-you-can-run-but-you-cant-hide.html/feed</wfw:commentRss>
		<feedburner:origLink>http://blogs.seapine.com/grant/customer-support-mother-in-law-you-can-run-but-you-cant-hide.html</feedburner:origLink></item>
		<item>
		<title>malloc Wii Fit</title>
		<link>http://feeds.feedburner.com/~r/CrouchingTigerCodingMonkey/~3/296654622/malloc-wii-fit.html</link>
		<comments>http://blogs.seapine.com/grant/malloc-wii-fit.html#comments</comments>
		<pubDate>Fri, 23 May 2008 16:48:48 +0000</pubDate>
		<dc:creator>Grant</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Wii]]></category>

		<guid isPermaLink="false">http://blogs.seapine.com/grant/?p=214</guid>
		<description><![CDATA[I knew I wanted to write a blog post today and I really had two choices.
1. Join in the debate over whether or not you need to know C in order to be a real programmer.
2. Talk about the Wii Fit
Lots of people are talking about choice number one. Well, perhaps talking isn’t the right [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "malloc Wii Fit", url: "http://blogs.seapine.com/grant/malloc-wii-fit.html" });</script>]]></description>
			<content:encoded><![CDATA[<p>I knew I wanted to write a blog post today and I really had two choices.</p>
<p>1. Join <a href="https://stackoverflow.fogbugz.com/default.asp?W12">in the debate</a> over whether or not <a href="http://www.ericsink.com/entries/c_morse_code.html">you need to know C</a> in order to be a real programmer.</p>
<p>2. Talk about the Wii Fit</p>
<p>Lots of people are talking about choice number one. Well, perhaps talking isn’t the right word. <a href="http://blog.darrenstokes.com/2008/05/22/do-you-really-need-to-know-c-i-think-so/">Flaming? Fighting? Insulting one’s intellect?</a> Yeah, any of those would do.</p>
<p>But we can bang that one out quick; here I’ll take a stand.</p>
<p>Do you know C? – Yep.</p>
<p>Have you programmed in C? – Double yep.</p>
<p>Have you programmed professionally in C? – Yes.</p>
<p>Would you do it again? – Wouldn’t be my first choice but sure why not?</p>
<p>Do you think programmers should know about pointers and memory management? – Couldn’t hurt them. Not that it makes it any fun though. Screwing that stuff up, and it always gets screwed up, results in errors in fun and terrible ways.</p>
<p>Ok, now that that is out of the way on to the <a href="http://us.wii.com/soft_wiifit.jsp">Wii Fit.</a>  Thanks to the magic of Amazon pre-orders ours arrived yesterday morning. By the time I made it home from work my wife was actively playing the hula hoop game on the Bluetooth scale board thingie while my three and a half year old daughter was standing three feet to the side making hula hoop motions.</p>
<p>Somehow I think Mario Corp. has a winner here with the new to gaming/super casual gaming crowd.</p>
<p>(And what about the Wii Fit commercial with the woman busting out the Yoga? I’ll bet they sold an extra bazillion units on that alone.)</p>
<p>Now we ran through all the unlocked games and exercises last night, and I doubt that it will cause any kind of gastric bypass like results, but one thing does stand out. The silly thing is fun. Who would have figured, balancing on a couple of scales to roll a virtual ball on a virtual board through a virtual hole is in demand entertainment these days.</p>
<p>We’ll have to see how long it keeps our attention, but I suspect with a couple people in the same house playing it the novelty won’t wear off as fast. In fact, I’ll bet right now my high scores on the balance games are being mercilessly attacked while I am hard at work <del datetime="2008-05-23T15:52:23+00:00">blogging</del>, err, working.</p>
<p>Oh, and to complete the circle from earlier, like all games it’s probably written in C. So if being a real programmer means writing pseudo-exercise console games it looks like C is indeed required.</p>
<p>Well, it might also be C++, but that’s really just C with a compiler messages that read like you strangled a cat.  <img src='http://blogs.seapine.com/grant/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  </p>
<p><a href="http://sharethis.com/item?&wp=2.5.1&amp;publisher=a1f5b042-fd30-4691-ad22-9713d9eeba1f&amp;title=malloc+Wii+Fit&amp;url=http%3A%2F%2Fblogs.seapine.com%2Fgrant%2Fmalloc-wii-fit.html">ShareThis</a></p><img src="http://feeds.feedburner.com/~r/CrouchingTigerCodingMonkey/~4/296654622" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.seapine.com/grant/malloc-wii-fit.html/feed</wfw:commentRss>
		<feedburner:origLink>http://blogs.seapine.com/grant/malloc-wii-fit.html</feedburner:origLink></item>
		<item>
		<title>USB on a Macbook Pro is a southpaw</title>
		<link>http://feeds.feedburner.com/~r/CrouchingTigerCodingMonkey/~3/291839662/usb-on-a-macbook-pro-is-a-southpaw.html</link>
		<comments>http://blogs.seapine.com/grant/usb-on-a-macbook-pro-is-a-southpaw.html#comments</comments>
		<pubDate>Fri, 16 May 2008 20:14:40 +0000</pubDate>
		<dc:creator>Grant</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Microphone]]></category>

		<guid isPermaLink="false">http://blogs.seapine.com/grant/?p=213</guid>
		<description><![CDATA[Today while I was doing some work I had the most recent Macbreak Weekly podcast going in the background.  For the second time in the last few weeks one of the hosts via Skype was sounding an awful lot like a Cylon.  It turns out the problem was the USB port on their [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "USB on a Macbook Pro is a southpaw", url: "http://blogs.seapine.com/grant/usb-on-a-macbook-pro-is-a-southpaw.html" });</script>]]></description>
			<content:encoded><![CDATA[<p>Today while I was doing some work I had the <a href="http://www.twit.tv/mbw89">most recent Macbreak Weekly podcast</a> going in the background.  For the second time in the last few weeks one of the hosts via Skype was sounding an awful lot like a Cylon.  It turns out the problem was the USB port on their Macbook Pro&#8217;s, specifically they were plugging their microphones into the one on the right side.</p>
<p>*Pauses*</p>
<p>*Scratches head*</p>
<p>The deal, it turns out, is that the USB port on the right hand side is connected to an internal hub that runs all the other devices like the keyboard. What this means is that there isn&#8217;t as much power to go around and it causes power hungry things like a microphone to behave oddly. The one on the left hand side however is all by itself so with it everything works great.</p>
<p>I find this interesting because the very same thing happened to us when we were recording some audio here.  At the time we thought my MBP USB port was ok but that <a href="http://blogs.seapine.com/jeff">Jeff&#8217;s</a> was broken because mine would work while his wouldn&#8217;t. Our theory was supported by the fact moving his connection to the left allowed it to work. </p>
<p>(That&#8217;s the standard by which to measure broken by the way, when one works and another does not.)</p>
<p>So that&#8217;s the scouting report for today, if you are having USB problems on a Macbook Pro try having it pitch left handed.</p>
<p><a href="http://sharethis.com/item?&wp=2.5.1&amp;publisher=a1f5b042-fd30-4691-ad22-9713d9eeba1f&amp;title=USB+on+a+Macbook+Pro+is+a+southpaw&amp;url=http%3A%2F%2Fblogs.seapine.com%2Fgrant%2Fusb-on-a-macbook-pro-is-a-southpaw.html">ShareThis</a></p><img src="http://feeds.feedburner.com/~r/CrouchingTigerCodingMonkey/~4/291839662" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.seapine.com/grant/usb-on-a-macbook-pro-is-a-southpaw.html/feed</wfw:commentRss>
		<feedburner:origLink>http://blogs.seapine.com/grant/usb-on-a-macbook-pro-is-a-southpaw.html</feedburner:origLink></item>
	</channel>
</rss>
