<?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>Jason Doucette, Toronto Tech Guy &#187; development</title>
	<atom:link href="http://jasondoucette.ca/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://jasondoucette.ca</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Thu, 02 Sep 2010 20:08:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>The Cormac McCarthy thoughtchain post</title>
		<link>http://jasondoucette.ca/2009/12/22/the-cormac-mccarthy-thoughtchain-post/</link>
		<comments>http://jasondoucette.ca/2009/12/22/the-cormac-mccarthy-thoughtchain-post/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 20:18:55 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[mindset]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://jasondoucette.ca/?p=140</guid>
		<description><![CDATA[Lots of saved browser tabs accumulating (and some old mental bookmarks as well) surrounding Cormac McCarthy, who apparently wrote the book No Country for Old Men and The Road, both of which were movies as of late, though he&#8217;s been published since 1965, so it seems shallow to just highlight the stuff he&#8217;s written in [...]]]></description>
			<content:encoded><![CDATA[<p></p><div id="attachment_141" class="wp-caption alignleft" style="width: 190px">
	<img class="size-full wp-image-141" title="McCarthy typewriter" src="http://jasondoucette.ca/wp-content/uploads/2009/12/mccarthytypewriter.jpg" alt="The Lettera 32 would be an awesome netbook if you could type silently" width="190" height="143" />
	<p class="wp-caption-text">The Lettera 32 would be an awesome netbook if you could type silently</p>
</div>
<p>Lots of saved browser tabs accumulating (and some old mental bookmarks as well) surrounding <a href="http://en.wikipedia.org/wiki/Cormac_McCarthy">Cormac McCarthy</a>, who apparently wrote the book No Country for Old Men and The Road, both of which were movies as of late, though he&#8217;s been published since 1965, so it seems shallow to just highlight the stuff he&#8217;s written in the past 10 years.  I mean, they guy&#8217;s typewriter <a href="http://artsbeat.blogs.nytimes.com/2009/12/04/cormac-mccarthys-typewriter-brings-254500-at-auction/">sold for a quarter million</a>, and it helped build way more than two books.</p>
<p>But hey, it&#8217;s not like I&#8217;ve read anything by him.  I just accumulate the links and tabs and bookmarks until they spill over.</p>
<p>So.</p>
<p>Item the first, which is the most recent, <a href="http://gapingvoid.com/2009/12/20/evil-plans-update/">is from this week by Hugh MacLeod</a>, in which he retells the story of a young aspiring writer asking McCarthy for advice on starting writing.  The response was &#8220;<em>Don&#8217;t do it unless you have to.</em>&#8221;</p>
<p>That reminded me of a post from way way back on <a href="http://www.mememachinego.com">MemeMachineGo</a>, which retold comics writer Alan Moore&#8217;s (Watchmen, V For Vendetta, lots of other good stuff) <a href="http://www.mememachinego.com/archives/001225.html">5 tips for would-be comics writers</a>.  The first, almost not surprisingly &#8220;don&#8217;t,&#8221; with tips 2 and 3 mirroring tip 1 in Fight Club style, but the one that always stuck in my head was item 5, paraphrased thusly: &#8220;<em>if you&#8217;re going to be any good, you have to commit yourself to it like an ancient Greek or Egyptian commits himself to a god.</em>&#8221;</p>
<p>That always stuck with me, but before we drill into that, we&#8217;re going back to McCarthy, who <a href="http://daringfireball.net/linked/2009/11/17/mccarthy">John Gruber quoted</a> from <a href="http://online.wsj.com/article/SB10001424052748704576204574529703577274572.html">a WSJ profile</a>: &#8220;<em>Anything that doesn’t take years of your life and drive you to suicide hardly seems worth doing.</em>&#8221;</p>
<p>I liked that bit, but that same interview yielded this gem, which was a little less bleak until you think of the ramifications: &#8220;<em>If you&#8217;re good at something it&#8217;s very hard not to do it.</em>&#8221;</p>
<p>You know, writing good code isn&#8217;t that much different than writing great works of literature, at least from a mindset perspective.  I think the biggest thing the blog and Twitter world has exposed is the (not altogether new) talent of making it look like you&#8217;re not working very hard on an all-consuming passion.</p>
]]></content:encoded>
			<wfw:commentRss>http://jasondoucette.ca/2009/12/22/the-cormac-mccarthy-thoughtchain-post/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to quickly add bugs and features in FogBugz</title>
		<link>http://jasondoucette.ca/2008/06/01/how-to-quickly-add-bugs-and-features-in-fogbugz/</link>
		<comments>http://jasondoucette.ca/2008/06/01/how-to-quickly-add-bugs-and-features-in-fogbugz/#comments</comments>
		<pubDate>Sun, 01 Jun 2008 14:36:11 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[Bug Tracking]]></category>
		<category><![CDATA[FogBugz]]></category>

		<guid isPermaLink="false">http://jasondoucette.ca/2008/06/01/how-to-quickly-add-bugs-and-features-in-fogbugz/</guid>
		<description><![CDATA[OK, so in FogBugz, there&#8217;s this fancy pants &#8220;Add case&#8221; link at the bottom of the list where you can enter one-liners and quickly enter cases into the system, and it&#8217;ll even assign them to the project that the list is reporting on. Visually speaking, clicking on this: Gets you this: Then you can type [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>OK, so in <a href="http://www.fogcreek.com/FogBugz/">FogBugz</a>, there&#8217;s this fancy pants &#8220;Add case&#8221; link at the bottom of the list where you can enter one-liners and quickly enter cases into the system, and it&#8217;ll even assign them to the project that the list is reporting on.</p>
<p>Visually speaking, clicking on this:</p>
<p><img src="http://jasondoucette.ca/images/fogbugz-addcase-link.jpg" alt="The Add Case link in FogBugz" height="88" width="510" /></p>
<p>Gets you this:</p>
<p><img src="http://jasondoucette.ca/images/fogbugz-addcase-box.jpg" alt="The streamlined add case thing in FogBugz" height="85" width="570" /></p>
<p>Then you can type away, hit enter, add another case, hit enter, etc.  It&#8217;s a really painless way to add items to the system, and painless means there&#8217;s a better chance you&#8217;ll actually do it.</p>
<p>It&#8217;s very cool, and possibly the best thing in the latest release (we don&#8217;t schedule releases in a way that makes the otherwise very cool <a href="http://www.fogcreek.com/FogBugz/LearnMore.html?section=PredictShipDates">evidence-based scheduling</a> feature handy for us &#8211; yet.)  There&#8217;s just one thing&#8230;</p>
<p>I was having this problem where all of the new cases were all being added as bugs, which meant that features and inquiries required that extra step of selecting the new items and doing a batch edit to change the category.  More work means less chance of it getting done, which leads to a less accurate task tracking system, which leads to anarchy and cheese flavoured ice cream and whatnot.</p>
<p>Here&#8217;s the way around that:</p>
<p>If you sort the items by category, it&#8217;ll group the lists by bug, feature, etc.  Each list has an &#8220;Add Case&#8221; link at the bottom, and if you add under the appropriate one, it&#8217;ll be entered in the right category, no second edit required.</p>
<p>But wait!  You can&#8217;t click on the category to sort it like you can the other columns!  Turns out you need to customize the filter through the Filter-&gt;Customize menu.  Scroll down to the &#8220;Sort by:&#8221; section and make the first item &#8220;Category&#8221; (I&#8217;m using Status and Priority for the other two at the moment, but that might change).  Save that filter (I&#8217;m making one per project, but you can also do it for all the cases assigned to you, for example) and you&#8217;ve got something that you&#8217;ll be more likely to update.</p>
<p><img src="http://jasondoucette.ca/images/fogbugz-filter-categories.jpg" alt="Filtering options in FogBugz" height="79" width="376" /><br />
Plus, the cheese flavoured ice cream forces of darkness will be forced back to their caves for another day.</p>
]]></content:encoded>
			<wfw:commentRss>http://jasondoucette.ca/2008/06/01/how-to-quickly-add-bugs-and-features-in-fogbugz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Everything needs an API</title>
		<link>http://jasondoucette.ca/2008/02/26/everything-needs-an-api/</link>
		<comments>http://jasondoucette.ca/2008/02/26/everything-needs-an-api/#comments</comments>
		<pubDate>Tue, 26 Feb 2008 15:31:54 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://jasondoucette.ca/2008/02/26/everything-needs-an-api/</guid>
		<description><![CDATA[Common sense that&#8217;s worth remembering: The smart game is building a robust API and let others get creative. (via A VC) Everything I do from now on needs to start with an API. We started a 3rd party integration project recently where I had to make one, and it was amazing a) how much re-work [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Common sense that&#8217;s worth remembering:</p>
<blockquote><p><em>The smart game is building a robust API and let others get creative.</em><em><br />
</em></p></blockquote>
<p>(<a href="http://avc.blogs.com/a_vc/2008/02/comment-of-the.html">via A VC</a>)</p>
<p>Everything I do from now on needs to start with an API.  We started a 3rd party integration project recently where I had to make one, and it was amazing a) how much re-work was required to expose functionality that already existed and b) how much of our internal code is rapidly migrating over to use the API calls.</p>
<p>I heard this advice a while ago and discounted it because I didn&#8217;t want to take a latency hit from a web call within my app to more code that&#8217;s essentially in my app, but I finally realized how much of an idiot I was being: <strong>your app doesn&#8217;t have to use the HTTP interface</strong>.  You can just call the internal libraries (because you <em>are</em> decoupling your web interface from your core code, right?)</p>
]]></content:encoded>
			<wfw:commentRss>http://jasondoucette.ca/2008/02/26/everything-needs-an-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visual Studio 2008 deal killers: ReSharper and Web Deployment Projects</title>
		<link>http://jasondoucette.ca/2007/11/28/visual-studio-2008-deal-killers-resharper-and-web-deployment-projects/</link>
		<comments>http://jasondoucette.ca/2007/11/28/visual-studio-2008-deal-killers-resharper-and-web-deployment-projects/#comments</comments>
		<pubDate>Wed, 28 Nov 2007 21:08:42 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[C# ReSharper Visual Studio]]></category>

		<guid isPermaLink="false">http://jasondoucette.ca/2007/11/28/visual-studio-2008-deal-killers-resharper-and-web-deployment-projects/</guid>
		<description><![CDATA[The agony&#8230; of waiting&#8230; So I&#8217;m chomping at the bit to dig into Visual Studio 2008 with C# 3.0, and I&#8217;ve been skimming C# 3.0 in a Nutshell, and we&#8217;ve got two new projects on the way that would be awesome to just start with the new versions, but&#8230; dependencies&#8230; Web Deployment Projects haven&#8217;t been [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>The agony&#8230; of waiting&#8230;</p>
<p>So I&#8217;m chomping at the bit to dig into Visual Studio 2008 with C# 3.0, and I&#8217;ve been skimming <a href="http://www.albahari.com/nutshell/">C# 3.0 in a Nutshell</a>, and we&#8217;ve got two new projects on the way that would be awesome to just start with the new versions, but&#8230; dependencies&#8230;</p>
<p><a href="http://msdn2.microsoft.com/en-us/asp.net/Aa336619.aspx">Web Deployment Projects</a> haven&#8217;t been ported over yet.  <a href="http://weblogs.asp.net/scottgu/">ScottGu</a> says it&#8217;ll happen in the two weeks or so following VS2008&#8242;s release, but in the meantime it looks like you can just use VS2005 for deployment.  Not a deal breaker.</p>
<p><a href="http://www.jetbrains.com/resharper/index.html">ReSharper</a> won&#8217;t support C# 3.0 until version 4.0, which will hit EAP in January (not that I&#8217;ve heard good things about ReSharper EAPs).  In the meantime, there&#8217;s a <a href="http://www.jetbrains.com/resharper/download/index.html#VS2008">version of  3.0.2 compiled for 2008</a> that&#8217;ll at least suck less.  Of course, that won&#8217;t help people like me who are still running 2.5 and are waiting to hear the upgrade plan (I&#8217;m not paying a $150 tax for a month and a half or so of development).</p>
<p>Visual Studio without ReSharper is a deal killer, especially after the last week or two of TDD practice.  The thing integrates so seamlessly into Visual Studio that I can&#8217;t tell where one ends and another begins, and I can&#8217;t imagine cutting out so many features from an IDE.</p>
<p>Oh well, at least nothing happens in December anyway, right?</p>
]]></content:encoded>
			<wfw:commentRss>http://jasondoucette.ca/2007/11/28/visual-studio-2008-deal-killers-resharper-and-web-deployment-projects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Donald Belcham keeps me on the TDD path</title>
		<link>http://jasondoucette.ca/2007/11/21/donald-belcham-keeps-me-on-the-tdd-path/</link>
		<comments>http://jasondoucette.ca/2007/11/21/donald-belcham-keeps-me-on-the-tdd-path/#comments</comments>
		<pubDate>Wed, 21 Nov 2007 12:07:43 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://jasondoucette.ca/2007/11/21/donald-belcham-keeps-me-on-the-tdd-path/</guid>
		<description><![CDATA[Inspired to do some penance following a late-night &#8220;there&#8217;s a bug in the app&#8221; call (OK, 10pm isn&#8217;t late, but it&#8217;s later than I want to be working), I spent some time yesterday working TDD-style, which I&#8217;ve played with before, but this time using mock objects, which I&#8217;ve never used but have the potential to [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Inspired to do some penance following a late-night &#8220;there&#8217;s a bug in the app&#8221; call (OK, 10pm isn&#8217;t late, but it&#8217;s later than I want to be working), I spent some time yesterday working TDD-style, which I&#8217;ve played with before, but this time using mock objects, which I&#8217;ve never used but have the potential to make my tests actually meaningful.</p>
<p>The net result?  a thirty minute job took three and a half hours.</p>
<p>Granted, some of that was learning curve.  A lot of that was learning curve, really.  Still, it took a lot to keep telling myself that I shouldn&#8217;t abandon <a href="http://en.wikipedia.org/wiki/Test-driven_development">TDD</a>, <a href="http://en.wikipedia.org/wiki/Model-view-controller">MVC</a>, etc. and just go back to stuffing everything in the codebehind.  After all, I&#8217;m competing with other companies whose developers do that, and fast turnaround is all the client cares about, right?</p>
<p>Well, I&#8217;m keeping at it, and it&#8217;s <span><span class="eventSpeaker"><a href="http://www.igloocoder.com/">Donald Belcham</a>&#8216;s fault.</span></span></p>
<p>After a long day of patching code and getting the crap kicked out of my by new tools, the last thing I wanted to do was go to a user group meeting and listen to someone talk about <a href="http://altdotnet.com/">Alt.net</a>, but somehow I managed to drag myself there (the fact that the venue was almost directly on the way home helped a lot.)</p>
<p>Wow.</p>
<p align="left">I thought that the talk was going to be mostly about <a href="http://ccnet.thoughtworks.com/">CC.Net</a> and <a href="http://nant.sourceforge.net/">nAnt</a> (which was the original plan, apparently), but it ended up being a two-parter:</p>
<p><strong>1) How to be a better developer</strong></p>
<p>I can&#8217;t tell you how much I needed to hear that what I was going through was normal, that nearly everyone gets kicked in the teeth when they start changing their development style, that the code I&#8217;m writing now is going to embarrass me in six months, and that it&#8217;ll all be worth it.</p>
<p>In the daily scramble to juggle multiple projects (before we finally started hiring), I lost track of what I loved most about software development: continuous personal improvement.  Donald pointed out that learning to write good code just like going to the gym: you need to practice regularly (he had an interesting practice of holding &#8220;corporate retreats&#8221; where he&#8217;d hole up in a hotel for a weekend just to write new code.)</p>
<p>I really wish that our new hire was able to make it to the talk.  Now he&#8217;s going to have to listen to me go on and on about it.</p>
<p><strong>2) Code examples</strong></p>
<p>Time was getting tight, but Donald managed to show us some examples of Monorail, which is apparently the most production-ready MVC framework for .Net out there right now.  I need to take another look at it &#8211; while there are some issues with NHibernate and MySQL, it&#8217;s a good candidate for a practice session.  If nothing else, I jotted down about a dozen future search terms for the google.</p>
<p>I wasn&#8217;t able to implement any of the ideas right away due to some other deadlines, but I did manage to see my TDD adventure in a new light.  Yes, it was a frustrating few hours, but in the process I managed to come up with a new refactoring for our data access layer that looks promising, I discovered a few coding practices that I need to stop (boolean functions that always return true, for example), and in theory I&#8217;ve got code that&#8217;s going to warn me if I inadvertently break it by making a change somewhere else.  Cool.</p>
<p>Thanks again to Donald as well as the <a href="http://www.metrotorontoug.com/Default.aspx">Metro Toronto .Net Users Group</a> for hosting the talk.  I went in wishing there was wireless so I could get some work done, and I left regretting that I couldn&#8217;t stick around for drinks.  I don&#8217;t want to tag it as &#8220;life-changing,&#8221; but I think it&#8217;s pushing me down a path that&#8217;ll make for an interesting few months while I try some more of this stuff out and see how it fits in our organization.</p>
]]></content:encoded>
			<wfw:commentRss>http://jasondoucette.ca/2007/11/21/donald-belcham-keeps-me-on-the-tdd-path/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
