Pragmatic Automation http://pragmaticautomation.com/cgi-bin/pragauto.cgi Pragmatic Automation. Hosted by Mike Clark. en-us Yes, We're Control Freaks http://pragmaticautomation.com/cgi-bin/pragauto.cgi/General/RepeatableApplications.rdoc I didn&#8217;t realize how much automation we have in and around our <a href="http://rubyonrails.com">Rails</a> project until the other day when our shared development server took a vacation and never came back. It&#8217;s like that backup strategy that only gets tested when the hard drive fails. Except in this case it was pretty much a yawner. Once we decided to go to a new machine, we were up and running in no time. There were no panic-stricken fire drills. For all intents and purposes, it was business as usual. <p> Part of the credit for no downtime goes to the fact that we all work untethered on our local machines. (This turns out to be super handy on long airplane rides.) This forces a discipline of keeping things relatively self contained. But we do hook up to the mother ship often (or right after those plane rides) to synchronize our work in a shared Subversion repository. The contents of that repository represent life. On demand, we can recreate anything in the repository&#8212;any version of a file from the time the project started up to the present. Everything else is out of our control. </p> <p> The key to repeatability lies in how much stuff you put in version control. It&#8217;s best just to go long. On our project, <a href="http://blog.x180.net">James</a> meticulously made sure that our Rails application was as self contained as possible. Using only the Subversion repository as a source, our entire application and its supporting infrastructure can be built from scratch. We regularly put that to the test on our local machines, and the development server is just another machine. </p> <p> It&#8217;s relatively easy to automate small things, but it&#8217;s especially rewarding when those recipes are applied to automate the big things, as well. Indeed, for large projects, no single recipe will do. But in his latest <a href="http://blog.x180.net/2005/07/rails_sandbox_d.html">blog</a>, James discusses some strategies that you might be able to pick up and apply to your project. </p> Autonomation http://pragmaticautomation.com/cgi-bin/pragauto.cgi/General/Autonomation.rdoc <a href="http://fun3d.larc.nasa.gov">Bil Kleb</a> wrote in to share an insightful term described in Taiichi Ohno&#8217;s book <em>Toyoto Production System: Beyond Large-Scale Production</em>: <dl> <dt></dt><dd>The Toyota production system utilizes <em>autonomation</em>, or automation with a human touch, rather than automation. Autonomation means transferring human intelligence to a machine. The concept originated with the auto-activated loom of Toyoda Sakichi. His invention was equipped with a device that automatically and immediately stopped the machine if the vertical or lateral threads broke or ran out. In other words, a device capable of making a judgment was built into the machine. <p> At Toyota, this concept is applied not only to the machinery but also to the production line and the workers. In other words, if an abnormal situation arises, a worker is required to stop the line. Autonomation prevents the production of defective products, eliminates overproduction, and automatically stops abnormalities on the production line allowing the situation to be investigated. </p> </dd> </dl> <p> What sorts of autonomation does your project have to &quot;stop the machine&quot; before abnormalities compound? </p> Announcing Pragmatic Studio http://pragmaticautomation.com/cgi-bin/pragauto.cgi/General/AnnouncingPragmaticStudio.rdoc When I visit projects, I often get asked the question: &quot;How do other projects apply automation, version control, and unit testing?&quot; Everyone knows they should be doing these key practices, but very few folks know just how. So by asking the question, managers and developers not only want to know what tools to use, but, more importantly, how other companies are using these fundamental practices to their advantage. You see, the teams I visit don&#8217;t have a lot of time for trial and error. They urgently need to know how to implement the practices <em>right</em>. <p> <a href="http://blogs.pragprog.com/cgi-bin/pragdave.cgi/Practices/PragmaticStudio.rdoc">Dave</a>, <a href="http://www.toolshed.com/blog/News/studio.html,v">Andy</a>, and I are excited to announce <a href="http://studio.pragprog.com">Pragmatic Studio</a>: a two-day interactive workshop where you learn how to make automation, version control, and unit testing work for you. It&#8217;s a unique opportunity to glimpse into a well-oiled project that&#8217;s using the essential practices covered in the <a href="http://www.pragmaticprogrammer.com/sk/">Pragmatic Starter Kit</a>. Based on our combined experience having visited many projects, you&#8217;ll be engaged in a project-like setting where we won&#8217;t just tell you what to do, we&#8217;ll show you first-hand how to do it right. But more than that, through lively discussion and fun interaction you&#8217;ll learn how to tailor the practices to your project. </p> <p> And to make it more convenient for you to attend, we&#8217;re bringing Pragmatic Studio to <a href="http://studio.pragprog.com/travel.html">three cities</a> this summer. We hope to see you in one of these Studios! </p> OSCON 2005 http://pragmaticautomation.com/cgi-bin/pragauto.cgi/General/OSCON05.rdoc I&#8217;m tickled pink, er, red to report that I just received confirmation that my automation with Ruby talk proposal has been accepted for the <a href="http://conferences.oreillynet.com/os2005/">O'Reilly Open Source Convention (OSCON)</a> in August. <p> I (heart) Ruby, and the number of real-life applications being built with Ruby is on the rise, thanks in large part to the <a href="http://www.rubyonrails.org/">Rails</a> juggernaut. Thankfully, the Ruby community has crafted good tools for automating many of the chores that go along with building and supporting these applications. And the Ruby language lends itself well to quickly automating repetitive tasks on any project. </p> <p> My <em>Getting Off the Treadmill</em> talk will cover at least the following: </p> <ul> <li>Using <a href="http://rake.rubyforge.org/">Rake</a> and <a href="http://www.ruby-doc.org/stdlib/libdoc/test/unit/rdoc/index.html">Test::Unit</a> to create a one-step build and test process. </li> <li>Continuously building and testing your code with <a href="http://damagecontrol.codehaus.org/">DamageControl</a>. (Hey, it&#8217;s written in Ruby.) </li> <li>Packaging, deploying, and installing applications with ease using <a href="http://rubygems.rubyforge.org">RubyGems</a>. </li> <li>Using Ruby to generate project metrics and synoptic displays. </li> <li>Turning step-by-step manual chores into push-button Ruby scripts. </li> <li>Monitoring builds and running programs with email, RSS, your cell phone, and other feedback devices. </li> <li>And I&#8217;m sure I won&#8217;t be able to resist showing off a <a href="http://www.rubyonrails.org/">Rails</a> application (or ten). </li> </ul> <p> Yes, I&#8217;ll bring my lava lamps, X10 controllers, orbs, and any other yummy automation gear I can scrounge before the conference. (Airport security can pry them from my cold, dead fingers. Well, maybe not.) </p> <p> Hope to see you there! </p> Two-Way Feedback http://pragmaticautomation.com/cgi-bin/pragauto.cgi/General/TwoWayFeedback.rdoc I really like how <a href="http://weblog.infoworld.com/udell/2005/02/10.html#a1174">Jon Udell</a> describes the interactions between human and computer during an automation lesson: <dl> <dt></dt><dd><em>Automating software systems reminds me of teaching a kid to ride a bicycle. A hands-on phase, in which you directly control the process, segues into a hands-off phase as the kid, having internalized the skill, asserts control. During that segue, however, there&#8217;s a complex negotiation. Control is traded back and forth in varying degrees, governed by a sensitive two-way feedback mechanism.</em> </dd> </dl> <p> For more automation insights, read Jon&#8217;s recent <a href="http://www.infoworld.com/article/05/02/04/06OPstrategic_1.html">InfoWorld column</a>. </p>