Pragmatic Automation http://pragmaticautomation.com/cgi-bin/pragauto.cgi Pragmatic Automation. Hosted by Mike Clark. en-us Using the Firecracker with Macs http://pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/Devices/FirecrackerWithMacs.rdoc <a href="http://onestepback.org/">Jim Weirich</a> wrote in to say that he has it on good authority that the <a href="http://www.keyspan.com/products/usa19hs/homepage.spml">KeySpan USA-19HS</a> will properly drive a <a href="http://www.x10.com/products/firecracker.htm">Firecracker</a>. The Keyspan adapter comes with Mac OS X drivers that speak the handshake signals the Firecracker listens for. Huzzah! That means you can remotely control your <a href="http://www.pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/Devices/BubbleBubbleBuildsInTrouble.rdoc">lava lamps</a> from your Mac. <p> Enjoy! </p> Bubble, Bubble, Build's In Trouble http://pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/Devices/BubbleBubbleBuildsInTrouble.rdoc Your software is being automatically built and tested on a schedule. It even sends you an email when the code doesn&#8217;t compile or pass its tests. You&#8217;re certainly ahead of most projects, but email is just so 90s. Even if you could manage to find those build failure emails amidst all that spam, you&#8217;re reading yesterday&#8217;s news. Indeed, you may already be ignoring the status of the scheduled build. <p> The Monitoring chapter of <a href="http://www.pragmaticprogrammer.com/sk/auto">the book</a> offers alternative, in-your-face, worth-getting-up-for-in-the-morning techniques for monitoring scheduled builds. The most popular technique came by way of a story contributed by <a href="http://www.developertesting.com/managed_developer_testing/000036.html">Alberto Savoia</a>. He describes how his project uses red and green lava lamps to radiate the status of their scheduled build. Better yet, those lamps are controlled using X10 devices such as those used to turn on your household lamps so that you don&#8217;t arrive home to a dark house. </p> <p> Well, as you might imagine, I could hardly wait to build my very own build-monitoring lava lamp kit. And as bonus material for readers of the book, I&#8217;ve crafted a bit o&#8217; software that integrates with <a href="http://cruisecontrol.sourceforge.net/">CruiseControl</a>. So now you too can enjoy red and green bubbles on your project! </p> <h3>Bill of Materials</h3> <p> To get started, you need some automation gear. Think of these gadgets as this year&#8217;s essential project accessories: </p> <ul> <li><a href="http://www.x10.com/products/firecracker.htm">4-Piece Firecracker Automation System</a> <p> This kit includes: </p> <ul> <li>1 Firecracker Computer Interface </li> <li>1 Transceiver Module </li> <li>1 Lamp Module </li> <li>1 Palm Pad Remote Control </li> </ul> <p> Cost: $39.99 </p> <p> (Props go to the folks at <a href="http://x10.com">x10.com</a> for supporting this project by supplying me with a complimentary kit. It all fits in a wee box, so I can carry it from project to project.) </p> <p> With that kit, you can control two lava lamps &#8212; one plugged into the transceiver module and the other plugged into the lamp module. You can optionally purchase another appliance module if you want to control two appliances. For example, you might want your build process to turn on a coffee pot when the build fails and then kick start your margarita machine when the build is fixed. </p> </li> <li>2 lamps, preferably the kind that boil red and green lava <p> I used the <a href="http://www.mmeworld.com/">Hot Rock Lite F/X</a> (yellow earth/blue liquid and red earth/purple liquid). Note for legal purposes that these lamps (shown in pictures below) are <em>not</em> <a href="http://lavaworld.com/">LAVA(R) brand motion lamps</a>, but those will work just as well. </p> <p> Cost: $9.99 each at Target or Walmart </p> </li> <li><a href="http://www.pragmaticautomation.com/code/pragautox10-1_0.zip">Pragmatic Automation X10 software</a> <p> It&#8217;s an open source Java library that includes the CruiseControl plug-in, an API to make your wildest X10 dreams come true, detailed instructions, and an ever-so-useful collection of tests. </p> <p> Way down deep, the library uses the <a href="http://java.sun.com/products/javacomm/">Java Communications API</a> to send bits out over the serial port and into the Firecracker Computer Interface. (Linux users will need the <a href="http://www.rxtx.org/">RXTX</a> implementation). Michel Dalal&#8217;s <a href="http://www.micheldalal.com/sw/java/x10/">Java X10 CM17A API library</a>, an implementation of the <a href="ftp://ftp.x10.com/pub/manuals/cm17a_protocol.txt">FireCracker (CM17A) Communications Specification</a>, is used to send out the correct 1s and 0s in response to human-friendly commands. Many thanks to him for doing all the low-level bit twiddling and sharing the goodies with us! </p> <p> Cost: Free to readers of <a href="http://www.pragmaticprogrammer.com/sk/auto">Pragmatic Project Automation</a> </p> </li> </ul> <h3>Assembling the Kit</h3> <p> With that hardware in hand, you&#8217;re ready to start the assembly process. The Firecracker Automation System includes instructions written for your average home electronics consumer, so your average computer/network geek should have no trouble. I&#8217;ll spare you all the gory details and instead run through a quick visual tutorial of my setup. </p> <p> Start by plugging the Firecracker Computer Interface into a serial port of your scheduled build machine: </p> <p> <img src="http://www.pragmaticautomation.com/images/firecracker.jpg"> </p> <p> This little gem sends a wireless signal from the computer to the transceiver module. Notice that you don&#8217;t lose the serial port. You can plug another serial device into the back of Firecracker Computer Interface. </p> <p> Next, plug the transceiver module into any wall outlet within your electrical wiring system. Then turn on the lamp you want the build process to light up when the build fails (the red lamp) and plug it into the transceiver module: </p> <p> <img src="http://www.pragmaticautomation.com/images/transceiver_module.jpg"> </p> <p> See that antennae on the transceiver? The transceiver picks up the RF signal sent by the Firecracker Computer Interface connected to the computer, converts it into an X10 signal, and broadcasts the X10 signal across the electrical wiring system. </p> <p> Every X10 module is uniquely identified by a house code (A-P) and a unit code (1-16). By default, the transceiver is configured to listen on &quot;A1&quot;. So when the Firecracker Computer Interface sends a signal that tells module &quot;A1&quot; to turn on, the device that&#8217;s connected to the transceiver&#8212;the red lamp&#8212;is turned on. </p> <p> Next, plug the lamp module into a wall outlet and set its house and unit code to &quot;A2&quot;. Then turn on the lamp you want the build process to light up when the build <em>passes</em> (the green lamp) and plug it into the lamp module, like so: </p> <p> <img src="http://www.pragmaticautomation.com/images/lamp_module.jpg"> </p> <p> When the Firecracker Computer Interface sends a signal instructing the &quot;A2&quot; module to turn on, the transceiver picks up the signal and broadcasts it out over the electrical wires. The lamp module hears the signal and turns on the green lamp. </p> <p> That&#8217;s it for assembly! </p> <p> At this point it&#8217;s a good idea to make sure you can turn these lamps on and off at will using the free software <a href="http://www.x10.com/products/firecracker.htm">(separate download</a>) that emulates the Palm Pad Remote Control. It sends signals through the Firecracker Computer Interface, so it&#8217;s a good sanity check that you have everything hooked up correctly. </p> <h3>Installing the Software</h3> <p> OK, now you want to hook the lava lamps up to your scheduled build process running in <a href="http://cruisecontrol.sourceforge.net/">CruiseControl</a>. That&#8217;s where the <a href="http://www.pragmaticautomation.com/code/pragautox10-1_0.zip">Pragmatic Automation X10 software</a> comes in. </p> <p> The README file describes how to install and test the software in detail. The final step is to register the CruiseControl plug-in that effectively wires up the lamps to indicate the status of each CruiseControl build cycle. Just to demonstrate how easy that is, here&#8217;s the XML you need to add to CruiseControl&#8217;s <tt>config.xml</tt> file: </p> <pre> &lt;plugin name=&quot;x10publisher&quot; classname=&quot;com.pragauto.X10Publisher&quot;/&gt; &lt;publishers&gt; &lt;x10publisher port=&quot;COM1&quot; passDeviceCode=&quot;A2&quot; failDeviceCode=&quot;A1&quot; /&gt; &lt;/publishers&gt; </pre> <p> Edit the attributes of the <tt>&lt;x10publisher&gt;</tt> element as necessary for your serial port and device codes. A complete <tt>config.xml</tt> file is included in the project as a reference. </p> <h3>Bubbles While You Work</h3> <p> Once you&#8217;ve fired up CruiseControl and a build succeeds, you&#8217;ll see something like this on the console: </p> <pre> BUILD SUCCESSFUL Total time: 10 seconds [cc]Jul-08 16:56:53 Project - Project dms: merging accumulated log files [cc]Jul-08 16:56:53 Project - Project dms: publishing build results [cc]Jul-08 16:56:53 X10Publisher - Turning pass device (A2) on; fail device (A1) off ... [cc]Jul-08 16:56:56 Project - Project dms: idle [cc]Jul-08 16:56:56 Project - Project dms: next build in 1 minutes </pre> <p> At that point, the green lava lamp should turn on. Bask in that pleasant glow for a moment. When the lamp gets warmed up, you&#8217;ll get entertained by happy, green bubbles: </p> <p> <img src="http://www.pragmaticautomation.com/images/green_bubbles.jpg"> </p> <p> And then at some point somebody might check in code that causes the build to fail. (Hey, it happens to even the best programmers once in a while.) Here&#8217;s the early warning sign that the scheduled build is in trouble: </p> <p> <img src="http://www.pragmaticautomation.com/images/trouble.jpg"> </p> <p> Eek! Notice that the ambient light in the red lamp goes on immediately. It will take a while for the red lava to heat up and start to boil. In the meantime, there&#8217;s work to be done. When you check the CruiseControl log, you&#8217;ll see something like this: </p> <pre> BUILD FAILED file:C:/work/dms/builds/checkout/dms/build.xml:77: Tests failed! Check test reports. Total time: 5 seconds [cc]Jul-08 16:58:20 Project - Project dms: merging accumulated log files [cc]Jul-08 16:58:20 Project - Project dms: publishing build results [cc]Jul-08 16:58:20 X10Publisher - Turning pass device (A2) off; fail device (A1) on... [cc]Jul-08 16:58:23 Project - Project dms: idle [cc]Jul-08 16:58:23 Project - Project dms: next build in 1 minutes </pre> <p> If it takes too long to fix the build, the red lamp will start to get angry: </p> <p> <img src="http://www.pragmaticautomation.com/images/red_bubbles.jpg"> </p> <p> The object of the game is to keep the green lamp glowing. :-) </p> <h3>Hearing the Build Break</h3> <p> You may have noticed that when the transceiver module turns on and off it makes a fairly loud snapping sound. That sound is caused by the mechanical relay inside. (The lamp module doesn&#8217;t make that sound, I suspect because it&#8217;s a low-current device that doesn&#8217;t use a mechanical relay.) </p> <p> This audible feedback turns out to be quite handy if your team is working in close quarters. The &quot;snap&quot; could be yet another sound in your <a href="http://www.pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/ListeningToComplexSystems.rdoc">project soundscape</a>. By plugging the red lamp into the transceiver module (A1), you&#8217;ll hear that snapping sound just before the red lamp turns on. So if you&#8217;re heads down (without headphones), the sound will alert you to a build failure. Indeed, you&#8217;ll hear the build break! </p> <h3>Important Safety Notes</h3> <p> These lamps get insanely hot. If you don&#8217;t let them cool down for at least five minutes before touching the glass, you&#8217;ll find out just <em>how</em> hot. (Yes, even the green one is hot.) </p> <p> The instructions for my lamps note that they perform best if operated for less than ten hours at a time. Your local fire marshal would certainly agree. But who will remember to turn off the lamps at the end of every programming day? Well, that&#8217;s a job for the ol&#8217; computer. Just write a shutdown program that uses the <a href="http://www.pragmaticautomation.com/code/pragautox10-1_0.zip">Pragmatic Automation X10 software</a> to turn off the lamps. For example: </p> <pre> new X10Device(&quot;COM1&quot;, &quot;A1&quot;).off(); new X10Device(&quot;COM1&quot;, &quot;A2&quot;).off(); </pre> <p> Then schedule an <tt>at</tt> or <tt>cron</tt> job on the scheduled build machine that runs the shutdown program at some hour of every evening, and another program that turns the lamps on every morning. </p> <h3>What About My Macintosh?</h3> <p> The Firecracker Computer Interface plugs into a serial port. Modern day Macintosh computers don&#8217;t have a serial port. Sadly, none of the USB-to-serial converters I tried worked with the Firecracker Computer Interface. (I&#8217;d love to hear otherwise.) </p> <p> You can purchase X10 kits that plug into USB, but I chose to use the Firecracker kit because it&#8217;s relatively cheap and it&#8217;s what is described in the book. Thankfully, by writing and testing most of this software against a mock device, I was able to do the majority of the development on my PowerBook. :-) </p> <h3>Conclusion</h3> <p> It&#8217;s relatively easy and inexpensive to make build monitoring a spectator sport. Put the lava lamps in a highly-visible area of your project and use them as visual (and audible) feedback devices, and to show off your programming prowess, of course. And that&#8217;s just the beginning. You can use any appliance to monitor anything that&#8217;s valuable to your team. </p> <p> Are you using feedback devices to spice up your project? If so, <a href="http://www.pragmaticautomation.com/cgi-bin/pragauto.cgi/SuggestContent.rdoc">please share your story</a>. </p> <p> Enjoy! </p> Screeching Animatronic Monkeys http://pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/Devices/WowweeMonkey.rdoc Suppose you&#8217;ve just launched a new web application. Being a savvy automator, you decide to set up monitors for significant system events like, say, new users signing up. Now it&#8217;s always good to pick a physical device that gives visual or audible feedback that in some way matches the logical event you&#8217;re monitoring. So what kind of feedback goes along with a new user signing up? <p> <a href="http://pixelcloud.com/blog">Ian Bishrey</a> couldn&#8217;t exactly wire up a human, so he went with the next best thing: a screeching <a href="http://www.wowweealiveonline.com/">Wowwee Alive! Monkey</a>. </p> <p> <img src="http://pixelcloud.com/blog/fp-content/images/zowwee.jpg"> </p> <p> You know you want one of these on your project, and Ian has <a href="http://pixelcloud.com/blog/index.php?entry=entry070622-155523">instructions and code</a> for how he hacked the remote controller and wrote a Java-based serial interface (with tests) to send commands to the animatronic monkeys. </p> <p> In the email he sent, Ian concluded by stating matter of factly &quot;Using the remote means we can control an army of chimps simultaneously.&quot; I had to read that sentence a couple times, and each time the mental images got progressively more frightening. Added to which, Ian mentioned in passing that they also use the monkeys to give feedback on &quot;low NLP linguistic classification confidence score events&quot;. So to summarize, we have a web 2.0 application that&#8217;s taking on new users and in some way processing natural languages, all being monitored by a potential army of monkeys. </p> <p> You know, when I challenged readers of the <a href="http://www.pragmaticprogrammer.com/sk/auto">automation book</a> to find creative ways to monitor their software projects, I never imagined it could come to this&#8230; </p> Gleaning Project Feedback http://pragmaticautomation.com/cgi-bin/pragauto.cgi/Tools/GleaningProjectFeedback.rdoc You know you want to extract useful information from your project in an automated way, but which tools should you use and how much configuration will they take? <p> <a href="http://jbrugge.com/blog">John Brugge</a> has taken a number of popular open-source tools and knitted them together for you. He&#8217;s calling it <a href="http://jbrugge.com/glean">Glean</a>, and his goal is to help your project get quick and easy feedback by simply dropping Glean into your build system. It&#8217;s analogous to Maven plugins, but aimed at projects using Ant, and less ambitious. </p> <p> Currently Glean includes scripts to drive the following tools: </p> <ul> <li>CPD (copy/paste detector) </li> <li>Emma (code coverage) </li> <li>JavaNCSS (source code metrics) </li> <li>PMD (static analysis) </li> <li>StatSVN (Subversion repository activity analysis) </li> <li>UMLGraph (generates UML class diagrams from code) </li> <li>&#8230; and about a dozen more </li> </ul> <p> The download includes basic documentation on how to set up Glean to run against a source tree, as well as sample configurations for a handful of open-source projects. </p> <p> John packaged up Glean to scratch an itch for his clients, and he&#8217;s offering it back to the community as a token of appreciation for all the open-source tools. <a href="http://jbrugge.com/glean">Glean</a> is distributed under an MIT license. </p> <p> Enjoy! </p> Chumby http://pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/Chumby.rdoc <a href="http://www.chumby.com/corporate/whatischumby">Chumby</a> looks to be a fun way to monitor automation in and around projects. It&#8217;s a portable Internet-connected device that displays visual widgets. Just &quot;trust the Chumby&quot; and it autodiscovers your wifi network. <p> But what makes Chumby special is the <a href="http://www.christine.net/2006/08/announcing_the_.html">open and hackable design</a>. Want a custom widget? Make one. Got some hardware you&#8217;d like to integrate? Plug it into the chumbilical. </p> <p> This is going to be fun to watch. Please send pictures of Chumby at work on your software project! </p> <p> <img src="http://www.chumby.com/images/doggy-chumby.jpg"> </p> Adding an RSS Feed to Subversion http://pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/AddingRSSToSVN.rdoc Bill Bumgarner expertly steps you through how to <a href="http://www.friday.com/bbum/2006/08/17/howto-adding-an-rss-feed-to-a-subversion-server/">hook an RSS feed into a local Subversion server</a>. More CVS Monitoring http://pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/MoreCVSMonitoring.rdoc Ethan wrote in to give us a heads-up on his new-and-improved CVS logging tool dubbed <a href="http://ethan.tira-thompson.com/cvslog2web/">cvslog2web</a>. <p> cvslog2web is similar to the CVS <a href="http://www.pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/LettingCVSPullTheTrigger.rdoc">commit hooking</a> and <a href="http://www.pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/Loginfo2Rss.rdoc">log info to RSS</a> techniques we&#8217;ve seen before, but offers it in one convenient package and adds a few more goodies. In addition to an Atom syndication format, you also get recent history as HTML, permalinks to individual log entry pages, and some careful thought on compacting/summarizing the log entries. </p> CruiseControl Yahoo Widget http://pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/CCYahooWidget.rdoc Ganesan Janarthanam got inspired by the idea of providing continuous integration feedback using a lava lamp and created the <a href="http://widgets.yahoo.com/gallery/view.php?widget=40036">CruiseControl Dashboard Yahoo Widget</a>. It lets you monitor multiple projects with an animated lava lamp. <p> <img src="http://a191.g.akamai.net/7/191/1560/4/gallery.widgetgallery.com/shots/40036-shot.jpg"> </p> SwitchTower as an Automated Deployment Archetype http://pragmaticautomation.com/cgi-bin/pragauto.cgi/Tools/SwitchTowerDeploymentArchetype.rdoc I&#8217;ve been remiss to have delayed mentioning <a href="http://manuals.rubyonrails.com/read/book/17">SwitchTower</a> until now. It&#8217;s an open-source utility that makes one-step deployment to one or more machines both possible and painless. <p> Say, for example, you need to roll out a new release of your killer app to two web servers, four application servers, and a database server. You could manually log in to each of those machines and type a list of commands, or just let SwitchTower do it for you: </p> <pre> rake deploy </pre> <p> That single incantation causes SwitchTower to execute the commands listed in your deployment recipe in parallel (and atomically) on multiple machines. (It uses <tt>ssh</tt> to communicate with the remote machines.) It&#8217;s really that easy. </p> <p> But then you notice that the application you just deployed has a bug. After giving your manager fifty push-ups, you&#8217;re thankful you can press the &quot;undo&quot; button: </p> <pre> rake rollback </pre> <p> That command rolls back the application to the last deployed version <em>on all deployed machines</em>. Yes, it&#8217;s really that easy. </p> <p> I&#8217;ve been starting to use SwitchTower on all my <a href="http://clarkware.com/rails.html">Rails projects</a>, and demo&#8217;ing it in our <a href="http://pragmaticstudio.com">Pragmatic Rails Studio</a>. As a result, SwitchTower has truly spoiled me. It&#8217;s an automator&#8217;s dream, and I can&#8217;t imagine going back to manual deployment gyrations. </p> <p> That brings us to the point of this elevator pitch: Can you deploy and roll back software releases this easily and consistently on your project? If not, I&#8217;d recommend you give the SwitchTower <a href="http://manuals.rubyonrails.com/read/book/17">manual</a> a read, especially if you <em>aren&#8217;t</em> building Rails applications. That&#8217;s right, even if you&#8217;ve never heard of Ruby or Rails you owe it to yourself to check out SwitchTower because its concepts aren&#8217;t specific to Ruby or Rails. And in fact it seems possible to use SwitchTower as the deployment vehicle for apps of any size and color by customizing a core set of tasks. I&#8217;d love to hear of efforts to adapt SwitchTower to J2EE projects, for example. </p> <p> Every software project can benefit from a deployment process that takes less time and money without sacrificing quality. SwitchTower is an archetype of automated deployment. Check it out before rolling your own solution. </p> When Build Silence Is Golden http://pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/BuildSilenceIsGolden.rdoc Andrew shared the following build frequency chart: <p> <img src="http://blogs.pragprog.com/images/pragauto/cewolf.png"> </p> <p> We see a flurry of good builds, then a six-day dry spell where almost no builds take place. Did somebody accidentally unplug the continuous build machine? Were all the developers at a conference? </p> <p> Perhaps there&#8217;s a better explanation when we remember that a build is only triggered when code is changed. In this case, no changes added up to good news for Andrew&#8217;s team: </p> <dl> <dt></dt><dd><em>We are particularly proud of the blank section as it signifies zero-defects on this in-production product ;-)</em> </dd> </dl> <p> Congrats! </p> CruiseControl 2.3.1 Released http://pragmaticautomation.com/cgi-bin/pragauto.cgi/Tools/CruiseControl231.rdoc <a href="http://cruisecontrol.sourceforge.net">CruiseControl</a> 2.3.1 was released today with an enviable display of <a href="http://sourceforge.net/mailarchive/message.php?msg_id=13309089">nips and tucks</a>. <p> Get it <a href="http://cruisecontrol.sourceforge.net/download.html">here</a>. </p> Another Build Frequency Inkblot http://pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/AnotherBuildFrequencyInkblot.rdoc I&#8217;m glad to hear that someone else peeked under the CruiseControl metrics tab for a glimpse at their project&#8217;s build frequency. Here&#8217;s an interesting (colorful!) one from a reader who shall remain anonymous: <p> <img src="http://blogs.pragprog.com/images/pragauto/cccommitchart2.png"> </p> <p> Notice how different it is from the <a href="http://www.pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/WhatsYourBuildFrequency.rdoc">first team's chart</a>. For starters, the broken build frequency seems high, but at least they&#8217;re periodically getting back to a healthy state. I&#8217;d suggest they could do a bit more local testing before checking in code, or perhaps just get a bit more sleep. The person who submitted the chart included the following commentary: </p> <dl> <dt></dt><dd><em>We&#8217;re not so hip on the 40 hour work week; this activity is all from four people in the same office. Please don&#8217;t mistake that as bragging.</em> </dd> </dl> <p> What else do you see when you look at this chart? </p> What's Your Build Frequency, Kenneth? http://pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/WhatsYourBuildFrequency.rdoc In response to the <a href="http://www.pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/VisualizingCommitTrends.rdoc">source code activity charts</a>, Robert Watkins kindly sent in this example chart displayed free of charge in the <a href="http://cruisecontrol.sourceforge.net">CruiseControl</a> metrics tab. <p> <img src="http://blogs.pragprog.com/images/pragauto/cccommitchart.png"> </p> <p> It shows the frequency of builds which, of course, are triggered by commits to the source code repository. Looks like a slick way to also monitor trends in scheduled build breakage. What does your build frequency chart look like? </p> Visualizing Commit Trends http://pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/VisualizingCommitTrends.rdoc <a href="http://lemonodor.com/archives/001216.html">Take a peek</a> at these example charts of source code repository activity. What do they imply? I have no idea, but I find them fascinating. <p> I wonder what the charts would look like on a project where the team builds things in small chunks (where <em>small</em> means &quot;measured in minutes&quot;) and checks in code directly after each thing is built and tested. Or would that kind of predictable development rhythm just make the data less interesting? At any rate, it would be interesting to use a bit o&#8217; automation to keep a running chart from start to end of a project. </p> <p> Oh, and please be careful not to read too much into these charts. I shudder at the thought of some pointy-haired manager using them as input to an employee bonus formula. </p> CruiseControl 2.3 Released http://pragmaticautomation.com/cgi-bin/pragauto.cgi/Tools/CruiseControl23.rdoc The dedicated team of folks who write code to keep your code continuously integrated have obviously been busy this summer. <a href="http://cruisecontrol.sourceforge.net">CruiseControl</a> 2.3 was released yesterday with a goodly amount of new features and plugins (<a href="http://sourceforge.net/mailarchive/message.php?msg_id=12776276">release notes</a>). <p> Get it <a href="http://cruisecontrol.sourceforge.net/download.html">here</a>. </p>