<?xml version='1.0' encoding='UTF-8' ?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title>RC Smalltalk</title>
	<updated>2008-05-03T16:28:58-04:00</updated>
	<id>http://www.cincomsmalltalk.com/userblogs/randy/blogView</id>
	<rights>Copyright 2007 Randy Coulman</rights>
	<generator uri="/CincomSmalltalkWiki/Silt" version="1.0">Silt Syndication Generator</generator>
	<link href="http://www.cincomsmalltalk.com/userblogsrandy/blogView" rel="alternate" type="text/html"></link>
	<link href="/rssBlog/randy-atom02.xml" rel="self" type="application/atom+xml"></link>
	<entry>
		<title>Book Review: The Art of Agile Development</title>
		<id>http://www.cincomsmalltalk.com/userblogs/randy/blogView?showComments=true&amp;printTitle=Book_Review:_The_Art_of_Agile_Development&amp;entry=3387284938</id>
		<updated>2008-05-03T16:28:58-04:00</updated>
		<author>
			<name>Randy Coulman</name>
			<uri>http://www.cincomsmalltalk.com/userblogsrandy/blogView</uri>
			<email>rcoulman@gmail.com</email>
		</author>
		<content type="html" xml:lang="en-us"><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p>I recently read <a href="http://www.amazon.com/Art-Agile-Development-James-Shore/dp/0596527675" target="_blank">The Art of Agile Development</a> by James Shore and Shane Warden and thought I should write up a brief review here.&nbsp; Full disclosure: I participated in review draft chapters of the book as it was being written, and as a way of saying thanks, I received a courtesy copy of the book.</p>

<p>As I understand it, the book began its life as an updated, second edition of Warden's (a.k.a. chromatic) <a href="http://www.amazon.com/Extreme-Programming-Pocket-Guide-chromatic/dp/0596004850" target="_blank">Extreme Programming Pocket Guide</a>, but quickly grew in scope to become its own book.</p>

<p>There are many variations on agile development these days, and even variations on the Extreme Programming (XP )practices.&nbsp; The authors cut through all of that to choose a good, solid set of practices and present them as a way to get started with agile development that will work well enough to get to the point where you can start to learn and adapt on your own.</p>

<p>After presenting the case for agile development in Part I, the authors move into the meat of the book in Part II, where they present the various practices.&nbsp; For each practice, the authors explain the practice and how to do it, answer common questions about the practice, discuss the expected results of following the practice, and then discuss "Contraindications" - things that might be true in your situation that may make it difficult or impossible to introduce the practice.&nbsp; Often, they present alternative practices to work around these cases.&nbsp; Part III of the book is for the more experience agile development team.&nbsp; Once you've gotten good at the practices, you need to start learning and adapting to make agile development really work for you.&nbsp; Part III gets people started down that road.</p>

<p>While I don't agree with the authors on every point, I found the book very good overall.&nbsp; It gives an excellent introduction to the current wisdom of the agile development community, and there are lots of ideas to consider and think about here.&nbsp; I recommend it for any team that is doing, or thinking about doing, agile development.</p>
</div>]]></content>
		<link href="http://www.cincomsmalltalk.com/userblogsrandy/blogView?showComments=true&amp;entry=3387284938" rel="alternate" type="text/html"></link>
		<category term="books"></category>
	</entry>
	<entry>
		<title>Speaking at Smalltalk Solutions 2008</title>
		<id>http://www.cincomsmalltalk.com/userblogs/randy/blogView?showComments=true&amp;printTitle=Speaking_at_Smalltalk_Solutions_2008&amp;entry=3384780275</id>
		<updated>2008-04-04T16:44:35-05:00</updated>
		<author>
			<name>Randy Coulman</name>
			<uri>http://www.cincomsmalltalk.com/userblogsrandy/blogView</uri>
			<email>rcoulman@gmail.com</email>
		</author>
		<content type="html" xml:lang="en-us"><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p>I've had two presentations accepted to <a href="http://www.stic.st/stic?content=sts2008" target="_blank">Smalltalk Solutions 2008</a>.&nbsp; One is a short technical talk entitled "Automating Smalltalk Builds with CruiseControl".&nbsp; The other is a tutorial called "Acceptance Testing with Fit".&nbsp;</p>

<p>This latter tutorial is a follow-on from a short talk I did at Smalltalk Solutions 2006 introducing Fit and Fitnesse.&nbsp; The tutorial will go into more detail about how to actually use these tools in a Smalltalk environment.</p>

<p>I don't have any scheduling infomration for these talks yet, but I hope to see you there.</p>

<p>&nbsp;</p>
</div>]]></content>
		<link href="http://www.cincomsmalltalk.com/userblogsrandy/blogView?showComments=true&amp;entry=3384780275" rel="alternate" type="text/html"></link>
		<category term="general"></category>
	</entry>
	<entry>
		<title>Cruisecontrol 2.7.2 released</title>
		<id>http://www.cincomsmalltalk.com/userblogs/randy/blogView?showComments=true&amp;printTitle=Cruisecontrol_2.7.2_released&amp;entry=3384780030</id>
		<updated>2008-04-04T16:40:30-05:00</updated>
		<author>
			<name>Randy Coulman</name>
			<uri>http://www.cincomsmalltalk.com/userblogsrandy/blogView</uri>
			<email>rcoulman@gmail.com</email>
		</author>
		<content type="html" xml:lang="en-us"><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="http://cruisecontrol.sourceforge.net/" target="_blank">Cruisecontrol 2.7.2</a> was released this week.&nbsp; Why do I care?&nbsp; This version contains the patch I submitted to make Cruisecontrol able to monitor VisualWorks Store repositories for changes as part of an automated build.&nbsp; See my <a href="blogView?search=cruisecontrol&amp;searchTitle=true&amp;searchText=true">previous posts</a> on the subject for more information.</p>
</div>]]></content>
		<link href="http://www.cincomsmalltalk.com/userblogsrandy/blogView?showComments=true&amp;entry=3384780030" rel="alternate" type="text/html"></link>
		<category term="tools"></category>
	</entry>
	<entry>
		<title>Helping the NewPrerequisiteEngine out</title>
		<id>http://www.cincomsmalltalk.com/userblogs/randy/blogView?showComments=true&amp;printTitle=Helping_the_NewPrerequisiteEngine_out&amp;entry=3383571783</id>
		<updated>2008-03-21T17:03:03-05:00</updated>
		<author>
			<name>Randy Coulman</name>
			<uri>http://www.cincomsmalltalk.com/userblogsrandy/blogView</uri>
			<email>rcoulman@gmail.com</email>
		</author>
		<content type="html" xml:lang="en-us"><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p>I've been using the NewPrerequisiteEngine for a long time.&nbsp; Over the years, various people have enhanced it to the point where it's a pretty decent tool.&nbsp; It still has some holes: there are prerequisites it should pick up and doesn't, and there are others it picks up but shouldn't.</p>

<p>For example, the package SymbolValue defines the method #value: on Symbol.&nbsp; There is really no way for the NPE to pick this up, and yet if I take advantage of it, I have a dependency.&nbsp; If a class definition has been overridden in some package, then the NPE thinks that anything using that class now depends on the overriding package.&nbsp; That may or may not be true.</p>

<p>Travis, Michael, David,and James were discussing this on the last Industry Misinterpretations podcast.&nbsp; I believe Michael made the comment that it would be nice to be able to give the tool some extra information to handle the cases where it falls down.</p>

<p>I've been working through our code base trying to clean up the pre-requisites.&nbsp; We often don't re-compute them because the tool will mess things up on us.&nbsp; I was tired of fighting with that, and Michael's comment turned the light on in my head.</p>

<p>I just replicated some new versions of the NewPrerequisiteEngine up to the public repository.&nbsp; The latest version is the 7.6 branch moved onto the head, plus a couple of other changes.&nbsp; The 7.6 branch should continue to run in 7.5; it just removes a menu option that has been integrated into the base in 7.6.</p>

<p>The minor change is that I put the engine classes into their own namespace so that they could be loaded into an image without the RB.&nbsp;</p>

<p>The more major change is that you can now right-click on one or more entries in the prerequisite list (in the pre-req tool) and choose either "Ignore" or "Make Explicit".&nbsp;</p>

<p>If you Ignore pre-reqs, they will be removed from the list and will also be added to a property on the package so that the NewPrerequisiteEngine will no longer include those pre-reqs when it performs its computation.</p>

<p>If you choose Make Explicit, the pre-reqs will be added to a property on the package so that the NewPrerequisiteEngine will always include them as pre-reqs.&nbsp; The Why? menu will also report them as explicit pre-requisites.</p>

<p>Using these tools, I was able to clean up all of our spurious pre-requisite problems, and I'm now more comfortable trusting the NewPrerequisiteEngine.</p>
</div>]]></content>
		<link href="http://www.cincomsmalltalk.com/userblogsrandy/blogView?showComments=true&amp;entry=3383571783" rel="alternate" type="text/html"></link>
		<category term="tools"></category>
	</entry>
	<entry>
		<title>RBPrerequisiteGraph update</title>
		<id>http://www.cincomsmalltalk.com/userblogs/randy/blogView?showComments=true&amp;printTitle=RBPrerequisiteGraph_update&amp;entry=3383290249</id>
		<updated>2008-03-18T10:50:49-05:00</updated>
		<author>
			<name>Randy Coulman</name>
			<uri>http://www.cincomsmalltalk.com/userblogsrandy/blogView</uri>
			<email>rcoulman@gmail.com</email>
		</author>
		<content type="html" xml:lang="en-us"><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p>I just published a new version of <a href="blogView?showComments=true&amp;printTitle=Prerequisite_Graphs&amp;entry=3383051221">RBPrerequisiteGraph</a> to the public repository.&nbsp; This version highlights the node for the current package, and displays nodes for any packages that depend on the current package.</p>

<p>I chose not to show any links for those parent packages other than the link to the selected package, because in many cases, it just over-clutters the graph.</p>

<p>Thanks for the suggestion, Runar.</p>
</div>]]></content>
		<link href="http://www.cincomsmalltalk.com/userblogsrandy/blogView?showComments=true&amp;entry=3383290249" rel="alternate" type="text/html"></link>
		<category term="tools"></category>
	</entry>
	<entry>
		<title>Prerequisite Graphs</title>
		<id>http://www.cincomsmalltalk.com/userblogs/randy/blogView?showComments=true&amp;printTitle=Prerequisite_Graphs&amp;entry=3383051221</id>
		<updated>2008-03-15T16:27:01-05:00</updated>
		<author>
			<name>Randy Coulman</name>
			<uri>http://www.cincomsmalltalk.com/userblogsrandy/blogView</uri>
			<email>rcoulman@gmail.com</email>
		</author>
		<content type="html" xml:lang="en-us"><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p>I've been doing some work lately on cleaning up prerequisites in our code base.  As I was working on this, I thought that having a visual view of a prerequisite graph might be nice.  I had a bit of free time, so I built a new CodeTool for the RefactoringBrowser (7.6 and later only) that shows a prerequisite graph for the current package.</p>

<p>Here's a basic view of a moderately complex graph:</p>

<p><img src="../../files/randy/prereqGraph.png" border="0" alt="Prerequisite Graph" width="532" height="196" /></p>

<p>And here's the same graph after I temporarily added a fake dependency from HashesBase to HTTP (to create a dependency cycle):</p>

<p><img src="../../files/randy/prereqGraphWithCycle.png" border="0" alt="Prerequisite graph with a cycle" width="532" height="192" /></p>

<p>I didn't spend a lot of time on graph layout, but what's there isn't too bad.  It is designed in such a way that dependencies flow left-to-right unless there is a cycle.  Obviously, some dependency chains are going to be a mass of spaghetti.</p>

<p>Try it out and let me know what you think.</p>
</div>]]></content>
		<link href="http://www.cincomsmalltalk.com/userblogsrandy/blogView?showComments=true&amp;entry=3383051221" rel="alternate" type="text/html"></link>
		<category term="tools"></category>
	</entry>
	<entry>
		<title>Industry Misinterpretations</title>
		<id>http://www.cincomsmalltalk.com/userblogs/randy/blogView?showComments=true&amp;printTitle=Industry_Misinterpretations&amp;entry=3381251498</id>
		<updated>2008-02-23T20:31:38-05:00</updated>
		<author>
			<name>Randy Coulman</name>
			<uri>http://www.cincomsmalltalk.com/userblogsrandy/blogView</uri>
			<email>rcoulman@gmail.com</email>
		</author>
		<content type="html" xml:lang="en-us"><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p>I was interviewed for the latest Industry MIsinterpretations podcast, where we talked about how we use Smalltalk at Key Technology (where I work).  We talked mostly about our automated builds and the <a href="CruiseControl%20interface%20to%20VW%20Smalltalk%20that%20I%27ve%20written%20about%20before">CruiseControl interface to VW Smalltalk that I&#39;ve written about before</a>.  We also touched on Fit and Fitnesse, which I haven&#39;t written about here yet, but will at some point in the future.</p><p><a href="../../blog/blogView?showComments=true&amp;printTitle=Industry_Misinterpretations_76:_Cruising_to_Control&amp;entry=3381240375" target="_blank">See James&#39; blog</a> for the link to the audio.</p><p>Now I have to go listen to myself to see what I said :-).&nbsp; Thanks to James, Michael, and David for having me on.&nbsp;</p>
</div>]]></content>
		<link href="http://www.cincomsmalltalk.com/userblogsrandy/blogView?showComments=true&amp;entry=3381251498" rel="alternate" type="text/html"></link>
		<category term="general"></category>
	</entry>
	<entry>
		<title>More on the test auto-runner</title>
		<id>http://www.cincomsmalltalk.com/userblogs/randy/blogView?showComments=true&amp;printTitle=More_on_the_test_auto-runner&amp;entry=3378464259</id>
		<updated>2008-01-22T14:17:39-05:00</updated>
		<author>
			<name>Randy Coulman</name>
			<uri>http://www.cincomsmalltalk.com/userblogsrandy/blogView</uri>
			<email>rcoulman@gmail.com</email>
		</author>
		<content type="html" xml:lang="en-us"><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p>Since I <a href="blogView?showComments=true&amp;printTitle=Automatically_running_SUnit_tests&amp;entry=3375696924">first talked about it</a>, I&#39;ve been using my test auto-runner a fair bit.&nbsp; I thought it would get annoying very quickly, and it turns out I&#39;ve really been liking it.&nbsp; However, the first version I published had a minor problem and an annoying limitation.</p><p>The problem was that it would always run, even if you got an interactive compiler error warning dialog and canceled it.&nbsp; The annoyance was that it wouldn&#39;t run after a refactoring.</p><p>I built a new version that solved these two limitations, however, it also had a bug.&nbsp; Because of where I hooked into the acceptance of a new method, the wrong test would be run when I edited an existing test method to create a new test method.</p><p>I finally gave in and did a version of the auto-runner that uses an override to do the job right.&nbsp; Now, the test auto-runner will run the correct test(s) after you save a method, or when you do a method-level refactoring (anything accessible from the context menu in the code editor).&nbsp; It also runs when you change a class definition.&nbsp; I haven&#39;t tested this, but it should also work with Travis&#39; new string editor.</p><p>Once again, this only works in the 7.6 pre-release versions of VW; it doesn&#39;t work with 7.5 or earlier&nbsp;&nbsp; To try it out, load SUnitToo(ls)-AutoRun from the public repository.</p>
</div>]]></content>
		<link href="http://www.cincomsmalltalk.com/userblogsrandy/blogView?showComments=true&amp;entry=3378464259" rel="alternate" type="text/html"></link>
		<category term="tweaks"></category>
	</entry>
	<entry>
		<title>ExtraCatalogs and VW 7.6</title>
		<id>http://www.cincomsmalltalk.com/userblogs/randy/blogView?showComments=true&amp;printTitle=ExtraCatalogs_and_VW_7.6&amp;entry=3378462856</id>
		<updated>2008-01-22T13:54:16-05:00</updated>
		<author>
			<name>Randy Coulman</name>
			<uri>http://www.cincomsmalltalk.com/userblogsrandy/blogView</uri>
			<email>rcoulman@gmail.com</email>
		</author>
		<content type="html" xml:lang="en-us"><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p>When bringing forward our code base to the not-yet-released VW 7.6, we discovered that our UI translations were no longer working.&nbsp; We use SimpleMessageCatalog from <a href="blogView?showComments=true&amp;printTitle=ExtraCatalogs&amp;entry=3373902554">ExtraCatalogs</a> to handle our translations.</p><p>It turns out that a new abstraction, MessageCatalogManager, was introduced for 7.6.&nbsp; 7.6 adds the ability to have per-process locales and message catalogs, and MessageCatalogManager is part of that solution.&nbsp; What it means for ExtraCatalogs, though, is that UserMessage lookup no longer goes through the class side of MessageCatalog and its subclasses.</p><p>I have published a 7.6-specific version of ExtraCatalogs to the public repository that works with MessageCatalogManager.&nbsp; It also uses the now-built-in implementation of per-process locales (it had its own implementation before that).&nbsp; This implementation will work with the jan08.2 build and later; prior builds didn&#39;t have all of the hooks necessary to make it work. </p><p>Thanks to Martin Kobetic and Steve Dahl for getting in some late-breaking changes to MessageCatalogManger to make this possible. </p>
</div>]]></content>
		<link href="http://www.cincomsmalltalk.com/userblogsrandy/blogView?showComments=true&amp;entry=3378462856" rel="alternate" type="text/html"></link>
		<category term="tools"></category>
	</entry>
</feed>
