<?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>hotgazpacho &#187; improvement</title>
	<atom:link href="http://hotgazpacho.org/tag/improvement/feed/" rel="self" type="application/rss+xml" />
	<link>http://hotgazpacho.org</link>
	<description>Embrace! Embrace! You hippie coder! Get off my dynamic lawn!</description>
	<lastBuildDate>Sat, 10 Jul 2010 15:22:14 +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>Continuous Improvement, Days 3 + 4: Team City ROCKS!</title>
		<link>http://hotgazpacho.org/2009/02/continuous-improvement-days-3-4-team-city-rocks/</link>
		<comments>http://hotgazpacho.org/2009/02/continuous-improvement-days-3-4-team-city-rocks/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 03:47:48 +0000</pubDate>
		<dc:creator>Will</dc:creator>
				<category><![CDATA[Continuous Improvement]]></category>
		<category><![CDATA[improvement]]></category>
		<category><![CDATA[kaizen]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[TeamCity]]></category>
		<category><![CDATA[vss]]></category>

		<guid isPermaLink="false">http://hotgazpacho.org/2009/02/continuous-improvement-days-3-4-team-city-rocks/</guid>
		<description><![CDATA[Day 3 I gave a presentation to my team yesterday morning about Continuous Integration and how I was implementing it with TeamCity. It was intended to be a quick, 5-minute job. It ended up be a half hour discussion, a back-and-forth. My team was engaged, asking questions, and enthusiastic about what I was doing; they [...]]]></description>
			<content:encoded><![CDATA[<h3>Day 3</h3>
<p>I gave a presentation to my team yesterday morning about Continuous Integration and how I was implementing it with TeamCity. It was intended to be a quick, 5-minute job. It ended up be a half hour discussion, a back-and-forth. My team was engaged, asking questions, and enthusiastic about what I was doing; they understood why this is a good thing. Rock on!</p>
<p>So, I’ve really been able to step into a leadership role this week. My primary focus has been attempting to understanding a troublesome application that the client had never been satisfied with, yet the organization is now dependant upon <em>(Policies and Procedures… BIG deal in Hospital)</em>, and guiding a contractor on the changes that need to be made <em>(I guess I’ve been wearing my architect hat)</em>. It’s nice that I’ve been able to think of things at a higher level of abstraction and describe this to the programmer to that we write better code. I guess you can say I’m doing some BDD, but without the tests to verify the behavior. <em>I know, I know. Baby steps.</em></p>
<p>Another major project I’ve been working on involves work by an outside vendor. They keep their code in a Subversion repository. To support my team’s part of the development, I set up a <a href="http://www.visualsvn.com/server/" target="_blank">VisualSVN server</a> on our local source-control server. Working with the vendor, we set up a bunch of svn:externals in my repo to pull their stuff in. Why is this important? Well, it was this combination of externals, combined with the fact that they require different authentication than my local workstation credentials, that made setting this project up in TeamCity, um… challenging. I was able to finally get it working with <a href="http://twitter.com/maxkir/status/1201701837" target="_blank">some guidance</a> from <a href="http://kirblog.idetalk.com/" target="_blank">Kirill Maximov</a> <em>(I think of the JetBrains team)</em>. The confusion was mostly mine. Once I understood that the external files were pushed in from the external VCS, instead of the local VCS root pulling in the externals, I was able to get things working. Yay!</p>
<h3>Day 4</h3>
<p>Today started off with some fire extinguishing. At my organization, we have an SSL VPN that allows us to customize the login screens with a set of templates. Since the login screens look like they are a part of our public web site, In order to reduce the maintenance overhead, I opted to share the style sheets with the login templates. Because we have to support IE 6 <em>(the organization is still predominantly IE 6)</em>, I use <a href="http://www.quirksmode.org/css/condcom.html" target="_blank">conditional comments</a> to server an additional stylesheet to IE 6 only, that overrides the main styles. Well, a software update over the weekend caused the VPN appliance to strip <strong>all</strong> HTML comments from the templates. This, of course, broke the login pages (in that some elements overlapped the form fields, preventing people, like the Center Director, from logging remotely). We were getting nowhere fast with the vendor, so I changed the markup of the pages to use tables to mimic a 2-column grid. Fire extinguished.</p>
<p>Next, it was off to a meeting with a client. She was overall very happy with the progress made so far, but she had some bugs she wanted to demonstrate to me. I also wanted to talk to her about her expectations for the administration part. I figured that this would be a great opportunity to try out the BDD style of describing a feature that <a href="http://cukes.info/" target="_blank">cucumber</a> promotes:</p>
<blockquote><p><strong>As a</strong>  [Role]<br />
<strong>I want</strong> [Feature]<br />
<strong>So that</strong> [Benefit]</p>
<p><em>(or some variant thereof)</em></p></blockquote>
<p>Once the client took me through the bugs she found, I walked her through the process of documenting the administration feature. It was great! There was this continual back and forth, and in the end, we both had a better understanding of how the feature should work. I know the process could be improved, but this was once heck of a start! I highly recommend this method to everyone.</p>
<p>During lunch, I decided to try and capitalize on the enthusiasm my team showed for my work so far. One of the topics that came up during the team meeting was a concern that we were still using Visual SourceSafe 6 <em>(yeah, I know)</em>, which, as someone pointed out, is about 10 years old. Everyone in attendance was in agreement that we should upgrade. As I was researching upgrading to VSS 2005, I found out that this version keeps the database compatibility with VSS 6, while introducing a new workflow. One of the biggest gripes I have with VSS 6 is the Lock-Modify-Unlock (LMU) mode of operation. Very outdated, and very counter-productive, especially in the following scenario:</p>
<blockquote><p>Developer A is tasked with a non-trivial implementation of a new feature<br />
Developer B is tasked with fixing a bug, and traces it down to one of the files Developer A is working on.</p></blockquote>
<p>With the LMU model, either Developer A has to jump through hoops to save their work elsewhere and undo their checkout so Developer B can work, or Developer B has to wait to fix the bug until Developer A finishes their feature some time in the future. In either case, some form of merging will need to take place.</p>
<p>VSS 2005 introduces the Copy-Modify-Merge (CMM) mode of operation more familiar to Subversion users. So, I opened a discussion with my team about enabling this option during the upgrade. There was some initial resistance, based on a perceived notion that forcing developers to talk to each other about the content of the changes to a file during a merge would somehow introduce more bugs into the code. I countered that this communication was desirable, as it forced more discussion of the code and increased the number of developers with knowledge of a given module of code. This, in turn, reduced the risk to the organization of the dreaded “hit by a bus” scenario. Plus, I proposed that we <a href="http://en.wikipedia.org/wiki/Timebox" target="_blank">timebox</a> the CMM mode of operation to a month, and analyze the results afterwards. This was enough to get the dissenters on board, and the blessing of my Team Lead and my Manager. FTW!</p>
<p>I’m sure some of you can see where I’m going with this; Ultimately, I aim to get us out of VSS altogether, and into Subversion. Why subversion? Once we’re on the CMM model in VSS, moving to subversion will be far less of a shock than, say, <a href="http://git.or.cz/" target="_blank">git</a>. Not that git is out of the question in the future, but git hasn’t clicked for me yet <em>(I haven’t used it much yet)</em>, and I would need to train the rest of the team on git. That’s more than I can handle right now. <em>Baby steps</em>.</p>
<p>Finally today, I followed the suggestion of TeamCity and migrated from the local HSQL database to a full-blown database server. In my case, this meant SQL Server 2005. Not exactly the smoothest ride with Integrated Windows (formerly NTLM) authentication, by which I mean no one explicitly documented the process end-to end. The key, it turns out, is to add the ntlmauth.dll to the TeamCity bin directory. Of course, after that, be sure that you change the the account that your TeamCity web service runs as to be the same user that you’re going to connect to the database with. <em>Remember, we’re talking Windows Authentication here, NOT SQL Server Authentication</em>.</p>
<p>So, in summary:</p>
<ul>
<li>My team is wicked receptive to all the concepts I’ve introduced so far</li>
<li>My team includes skeptics, but <em>open-minded skeptics willing to compromise</em></li>
<li>TeamCity ROCKS because its not tied to a specific VCS, and there are plugins for just about any VCS</li>
<li>TeamCity also ROCKS because it is helping expose flaws in the structure of our projects that is making things more difficult than it needs to be</li>
</ul>
<p>My plans for <del>world domination</del> <ins>improving my development team</ins> are progressing nicely.</p>
]]></content:encoded>
			<wfw:commentRss>http://hotgazpacho.org/2009/02/continuous-improvement-days-3-4-team-city-rocks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Continuous Improvement: Day 2</title>
		<link>http://hotgazpacho.org/2009/02/continuous-improvement-day-2/</link>
		<comments>http://hotgazpacho.org/2009/02/continuous-improvement-day-2/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 04:13:45 +0000</pubDate>
		<dc:creator>Will</dc:creator>
				<category><![CDATA[Continuous Improvement]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[improvement]]></category>
		<category><![CDATA[kaizen]]></category>
		<category><![CDATA[TeamCity]]></category>

		<guid isPermaLink="false">http://hotgazpacho.org/2009/02/continuous-improvement-day-2/</guid>
		<description><![CDATA[Just a short post tonight. It was a long, hectic day, and I didn’t get enough sleep last night. Day two on my journey of Continuous Improvement saw me getting one of my team’s projects set up to automatically build through TeamCity. After fixing a couple project reference issues, I was able to get our [...]]]></description>
			<content:encoded><![CDATA[<p><em>Just a short post tonight. It was a long, hectic day, and I didn’t get enough sleep last night.</em></p>
<p>Day two on my journey of Continuous Improvement saw me getting one of my team’s projects set up to automatically build through TeamCity. After fixing a couple project reference issues, I was able to get our public website project building. We use the Visual Studio 2008 Web Site model; we do not precompile the project in any way before deploying to production. This caused a problem in TeamCity. This is because the Build target for Web Site Projects doesn’t do anything. Instead I had to set the build target to Publish. This causes the web site to be precompiled. I did this all on my lunch break <img src='http://hotgazpacho.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I’ve recommended to my manager that he include the cost of an enterprise license in his budget for the next fiscal year.</p>
<p>Once I got the automated build working, I was wicked excited. I spoke with a fellow Senior Developer and our Lead Analyst about what I had accomplished. Both were equally excited. they basically had the same thing to say:</p>
<blockquote><p>We know our current process is broken. I’m glad you’re doing something about it.</p>
</blockquote>
<p>Rock on!</p>
<p>I gave my manager a quick update on what I’ve accomplished so far. He was equally excited. Then he asked the million dollar question:</p>
<blockquote><p>Does what you have done require your team members to change their workflow?</p>
</blockquote>
<p>To which I happily replied: No. This was the right answer at this stage of the game. We’re shooting for low-to-no friction to get the ball rolling.</p>
<p>What I meant was: <em>Not Yet! <img src='http://hotgazpacho.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </em></p>
<p>I’m presenting my work so far to the team tomorrow at our weekly meeting <em>(note to self: include replacement of weekly, hour-long meeting with daily, 15-minute stand ups in future plans)</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://hotgazpacho.org/2009/02/continuous-improvement-day-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Continuous Improvement, Day 1: Hello, TeamCity!</title>
		<link>http://hotgazpacho.org/2009/02/continuous-improvement-day-1-hello-teamcity/</link>
		<comments>http://hotgazpacho.org/2009/02/continuous-improvement-day-1-hello-teamcity/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 04:25:33 +0000</pubDate>
		<dc:creator>Will</dc:creator>
				<category><![CDATA[Continuous Improvement]]></category>
		<category><![CDATA[improvement]]></category>
		<category><![CDATA[kaizen]]></category>
		<category><![CDATA[TeamCity]]></category>

		<guid isPermaLink="false">http://hotgazpacho.org/2009/02/continuous-improvement-day-1-hello-teamcity/</guid>
		<description><![CDATA[Wow, is that post title an oxymoron? What was the tag line on my blog again? Today was the start of my journey on the road of Continuous Improvement. One of the big things I took away from acts_as_conference was “Just F***in Do It”. Or, put a little more eloquently by Corey Haines (who I [...]]]></description>
			<content:encoded><![CDATA[<p><em>Wow, is that post title an oxymoron? What was the tag line on my blog again? <img src='http://hotgazpacho.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </em></p>
<p>Today was the start of my journey on the road of Continuous Improvement. One of the big things I took away from <a href="http://www.actsasconference.com/" target="_blank">acts_as_conference</a> was <em>“Just F***in Do It”</em>. Or, put a little more eloquently by Corey Haines <em>(who I later found out was paraphrasing Ghandi)</em>:</p>
<blockquote><p>Be the trouble you want to see.</p>
</blockquote>
<p>So, as it turns out, I’ve garnered a certain level of respect with my manager. Basically, my manager provided me with an opportunity to plant the seed of the ideas <em>(which, admittedly, are still germinating in me)</em> that I’ve been able to gave name to recently. Guess what. He was totally receptive! Awesome! I mentioned Continuous Integration, gave him a brief schpeil on the potential benefits, and, perhaps the real selling point, a <a href="http://www.jetbrains.com/teamcity/" target="_blank">free tool</a>&#160;<em>(recommended by </em><a href="http://www.cornetdesign.com/" target="_blank"><em>Cory Foy</em></a><em>)</em> to do it with. “Great!”</p>
<p>Awesome!</p>
<p>Between helping the new contractor get adjusted, dealing with a <a href="http://twitter.com/hotgazpacho/statuses/1193080368" target="_blank">SharePoint migration issue</a>, and warding off other departments from dumping their vendor issues on my shoulders, I installed Team City on our source control server <em>(did I mention that I hate VSS? Note to self: migrating it to SVN should be in my Continuous Improvement plan).</em> WOW. I mean, WOW! That was dead freaking simple! I struggled with <a href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET" target="_blank">CruiseControl.NET</a> for what must have been a week, and I had no working build system <em>(recall the part about VSS)</em>. FAIL! I spent a whopping <em>half an hour</em> setting up a build, with system tray monitor AND Visual Studio integration. PASS! However, the build failed, exposing a flaw in the project file. Developer FAIL!</p>
<p>Poet Mattie J.T. Stepanek once wrote:</p>
<blockquote><p>Every journey begins with but a small step and every day is a chance for a new, small step in the right direction.</p>
</blockquote>
<p>Baby steps, folks, baby steps.</p>
]]></content:encoded>
			<wfw:commentRss>http://hotgazpacho.org/2009/02/continuous-improvement-day-1-hello-teamcity/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A Confession: I don&#8217;t do TDD, but I know I should</title>
		<link>http://hotgazpacho.org/2009/02/a-confession-i-dont-do-tdd-but-i-know-i-should/</link>
		<comments>http://hotgazpacho.org/2009/02/a-confession-i-dont-do-tdd-but-i-know-i-should/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 00:12:44 +0000</pubDate>
		<dc:creator>Will</dc:creator>
				<category><![CDATA[Continuous Improvement]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[improvement]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[tdd]]></category>

		<guid isPermaLink="false">http://hotgazpacho.org/?p=21</guid>
		<description><![CDATA[So, I was at acts_as_conference 2009 this past weekend. I met a lot of great people, especially the two Coreys: Cory Foy and Corey Haines, who were kind enough to spend a lot of time having very thoughtful discussions with me. The thing that struck me the most was the attitude of everyone in attendance: [...]]]></description>
			<content:encoded><![CDATA[<p>So, I was at <a href="http://www.actsasconference.com/" target="_blank">acts_as_conference</a> 2009 this past weekend. I met a lot of great people, especially the two Coreys: <a href="http://www.cornetdesign.com/" target="_blank">Cory Foy</a> and <a href="http://www.coreyhaines.com/" target="_blank">Corey Haines</a>, who were kind enough to spend a lot of time having very thoughtful discussions with me. The thing that struck me the most was the attitude of everyone in attendance: your code is your craft, your art, your expression of you. As such, you should exhibit pride in your work. The way we, as programmers, have to do that is working code, and the way you prove that is with tests.</p>
<p>This morning, I read <a>an article from one of the Pivotal Labs guys</a> that sums it up pretty well:</p>
<blockquote cite="http://pivotallabs.com/users/amilligan/blog/articles/649-silly-gents-it-is-doing-a-good-job-7-"><p>In short, if you write software, and you&#8217;re not writing tests, then you&#8217;re not doing your job.</p>
<p>I don&#8217;t mean not doing your job like a waiter who doesn&#8217;t take your order quickly enough; I mean not doing your job like a surgeon who operates without washing his or her hands. As in completely unacceptable performance.</p></blockquote>
<p>This is an idea that Corey Haines also echoed, though he put it more severly: if you&#8217;re not writing tests, you are <strong>negligent</strong>.</p>
<p>I was reluctant to agree at first, but that is largely because all of the code I, and my team, write and maintain on a daily basis contains exactly ZERO tests. None. Nada. Zip. 0. I need to change this. I&#8217;m working through some ideas on how to accomplish this, and I plan to chronicle it here with a series of blog posts.</p>
<p>To that end, I&#8217;ve listened to a couple of the <a href="http://altdotnet.org/">Alt.Net</a> podcasts, some <a href="http://www.hanselminutes.com/">Hanselminutes</a> podcasts, and I intend to read up a bit on LEAN manufacturing to really get my head around these ideas. My goal is to figure out the best way to imporve my team and our work; to turn us in to craftsmen (and women). In the mean time, if you have any sage advice on books I should read, approaches I should consider, tools we could/should use, even suggestions on the way we structure our projects, I am open and receptive.</p>
<p>I am an empty vessel. I invite you to fill me up.</p>
]]></content:encoded>
			<wfw:commentRss>http://hotgazpacho.org/2009/02/a-confession-i-dont-do-tdd-but-i-know-i-should/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
