<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/">

  <channel rdf:about="http://donie.homeip.net:8080/pebble/Steve/">
    <title>Something Pithy</title>
    <link>http://donie.homeip.net:8080/pebble/Steve/</link>
    <description>my geekness knows no bounds</description>
    <items>
      <rdf:Seq>
        
        <rdf:li resource="http://donie.homeip.net:8080/pebble/Steve/2008/05/08/1210259456125.html" />
        
        <rdf:li resource="http://donie.homeip.net:8080/pebble/Steve/2008/05/02/1209755848688.html" />
        
        <rdf:li resource="http://donie.homeip.net:8080/pebble/Steve/2008/01/15/1200410760656.html" />
        
        <rdf:li resource="http://donie.homeip.net:8080/pebble/Steve/2007/11/28/1196279720723.html" />
        
        <rdf:li resource="http://donie.homeip.net:8080/pebble/Steve/2007/03/09/1173455460000.html" />
        
        <rdf:li resource="http://donie.homeip.net:8080/pebble/Steve/2007/03/05/1173077880000.html" />
        
        <rdf:li resource="http://donie.homeip.net:8080/pebble/Steve/2007/03/02/1172875065343.html" />
        
        <rdf:li resource="http://donie.homeip.net:8080/pebble/Steve/2007/03/02/1172854856750.html" />
        
        <rdf:li resource="http://donie.homeip.net:8080/pebble/Steve/2007/01/13/1168715889382.html" />
        
        <rdf:li resource="http://donie.homeip.net:8080/pebble/Steve/2006/11/10/1163223841293.html" />
        
      </rdf:Seq>
    </items>
  </channel>

  
  <item rdf:about="http://donie.homeip.net:8080/pebble/Steve/2008/05/08/1210259456125.html">
    <title>Using deli.icio.us on your iPhone or iPod touch</title>
    <link>http://donie.homeip.net:8080/pebble/Steve/2008/05/08/1210259456125.html</link>
    
      
        <description>
          &lt;p&gt;My lovely wife got me an iPod touch for my birthday, and I really like it. Since it has WiFi and the safari browser, its like having a tiny computer. I have been using it to check email (both through the gmail web page and the IMAP client that comes with it, again hitting gmail) read blogs (google reader), twitter (using safai and &lt;a href=&#034;http://hahlo.com/&#034;&gt;hahlo&lt;/a&gt;), listen to podcasts, etc. etc. All very cool. &lt;/p&gt; &lt;p&gt;Today I wanted to set up bookmarks to &lt;a href=&#034;http://del.icio.us/stevedonie&#034;&gt;my del.icio.us account&lt;/a&gt; (easy enough) and a &#039;post to del.icio.us&#039; bookmarklet. Setting up bookmarklets on the touch is difficult though - there is no &#039;drag this link to the toolbar&#039; gesture in the touch interface. Luckily, I found a bookmarklet called &lt;a href=&#034;http://joemaller.com/2008/01/12/itransmogrify/&#034;&gt;iTransmogrify&lt;/a&gt; that allows me to see flash videos that are embedded in web pages. They have 2 sets of instructions for setting up a bookmarklet. One involves a PC and sync&#039;ing bookmarks, which I didn&#039;t want to do. The second is somewhat tedious, but it is all doable through the device itself. Click on the link above to iTransmogrify and find the link that says &#039;add iTransmogrify from your iPhone&#039; for a good set of instructions. &lt;/p&gt; &lt;p&gt;I haven&#039;t been able to find a delicious bookmarklet in the correct format, so I&#039;ll put one here and give you instructions on how to use it. &lt;/p&gt; &lt;p&gt;1. read all the directions first, and get them in your head.&lt;/p&gt; &lt;p&gt;2. Click on the link below, and then bookmark the page that opens. &lt;/p&gt; &lt;p&gt;3. Change the title of the bookmark to &#039;post to delicious&#039; or something similar.&lt;/p&gt; &lt;p&gt;4. After bookmarking the page, go to your bookmarks, and select &#039;edit&#039; at the bottom left.&lt;/p&gt; &lt;p&gt;5. tap the newly added bookmark to edit it.&lt;/p&gt; &lt;p&gt;6. Change the URL by removing the leading part of the URL, all the way up to &#039;javascript:&#039;&lt;/p&gt; &lt;p&gt;7. change the word &#034;username&#034; that is in the remaining link to &lt;em&gt;your &lt;/em&gt;username.&lt;/p&gt; &lt;p&gt;ok - now go &lt;a href=&#034;http://joemaller.com/___?javascript:location.href=&#039;http://del.icio.us/username?url=&#039;+escape(location.href)+&#039;&amp;amp;title=&#039;+escape(document.title)&#034; target=&#034;_blank&#034;&gt;install the &#039;post to del.icio.us&#039; bookmarklet using the iTransmogrify instructions&lt;/a&gt;&lt;/p&gt;
        </description>
      
      
    
  </item>
  
  <item rdf:about="http://donie.homeip.net:8080/pebble/Steve/2008/05/02/1209755848688.html">
    <title>Economic advice</title>
    <link>http://donie.homeip.net:8080/pebble/Steve/2008/05/02/1209755848688.html</link>
    
      
        <description>
          &lt;p&gt;I was reading a set of &lt;a href=&#034;http://freakonomics.blogs.nytimes.com/2008/05/01/robert-reich-answers-your-labor-questions/?th&amp;amp;emc=th&#034;&gt;questions and answers with Robert Riech&lt;/a&gt;, and really liked this one:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Q:&lt;/strong&gt; What should the U.S. government change in its current fiscal policies in order to lead by example?&lt;br&gt;&lt;strong&gt;&lt;br&gt;A: &lt;/strong&gt;The federal budget should be divided between past obligations (Social Security and Medicare), current expenditures (Medicaid, food stamps, national defense), and future investments (infrastructure, basic research, and education). &lt;/p&gt; &lt;p&gt;Past obligations should be funded by past and current contributions for these purposes. Current expenditures should be paid for by current revenues. Future investments may generate a deficit if the estimated future benefits from such investments exceed the estimated future borrowing costs. Families should do the same, no? &lt;p&gt;Something I think I need to look at and see if I am doing or not. &lt;/p&gt;
        </description>
      
      
    
  </item>
  
  <item rdf:about="http://donie.homeip.net:8080/pebble/Steve/2008/01/15/1200410760656.html">
    <title>Future Beachfront property</title>
    <link>http://donie.homeip.net:8080/pebble/Steve/2008/01/15/1200410760656.html</link>
    
      
        <description>
          &lt;p&gt;Happened to run across this site - &lt;a title=&#034;http://flood.firetree.net/?ll=29.5579,-94.6925&amp;amp;z=7&amp;amp;m=14&#034; href=&#034;http://flood.firetree.net/?ll=29.5579,-94.6925&amp;amp;z=7&amp;amp;m=14&#034;&gt;firetree flood maps&lt;/a&gt; in which a guy has mashed up elevation data from NASA with Google maps, and can show (very roughly) what would be flooded if the oceans rose by differing amounts. The link above shows Houston (an area I know pretty well, and which seems like a very flood-prone area) with a 14 meter increase. Pretty scary, if the oceans actually did rise that much. &lt;/p&gt; &lt;p&gt;The system can generate overlays for sea level rises of 0 - 14 meters. 1 meter sounds like a whole lot to me, given that some quick research on &lt;a href=&#034;http://en.wikipedia.org/wiki/Sea_level_rise&#034;&gt;WikiPedia&lt;/a&gt; shows only 20 cm per century. That said, a 1 meter rise doesn&#039;t affect Houston a whole lot . Of course, this ignores all sorts of things like tides, seawalls, etc. More details at his &lt;a href=&#034;http://blog.firetree.net/2006/05/18/more-about-flood-maps/&#034;&gt;&#034;about&#034; page&lt;/a&gt;, along with lots of comments both positive and negative. &lt;/p&gt; &lt;p&gt;Some of the more dire predictions (like if the whole Greenland ice sheet melts, or even all of Antarctica) have sea levels rising 20 to 60 meters! &lt;/p&gt;
        </description>
      
      
    
  </item>
  
  <item rdf:about="http://donie.homeip.net:8080/pebble/Steve/2007/11/28/1196279720723.html">
    <title>How to explicitly fail a FIT test from a DoFixture</title>
    <link>http://donie.homeip.net:8080/pebble/Steve/2007/11/28/1196279720723.html</link>
    
      
        <description>
          &lt;p&gt;Back when I was at DataCert, my buddy Jeff Palermo wrote &lt;a href=&#034;http://codebetter.com/blogs/jeffrey.palermo/archive/2006/02/23/139136.aspx&#034;&gt;a blog post on this topic&lt;/a&gt;. Since then, I have switched languages from C# to Java, so here is the same thing, translated to Java.&lt;/p&gt;&lt;pre class=&#034;csharpcode&#034;&gt;
import fit.Fixture;
import fit.Parse;
import fitlibrary.DoFixture;


&lt;span class=&#034;kwrd&#034;&gt;public&lt;/span&gt; &lt;span class=&#034;kwrd&#034;&gt;class&lt;/span&gt; MyDoFixture extends DoFixture {

  &lt;span class=&#034;kwrd&#034;&gt;private&lt;/span&gt; Parse currentParse;

  &lt;span class=&#034;kwrd&#034;&gt;public&lt;/span&gt; &lt;span class=&#034;kwrd&#034;&gt;void&lt;/span&gt; RunSystem()
  {
      &lt;span class=&#034;rem&#034;&gt;//hook into system&lt;/span&gt;
  }

  &lt;span class=&#034;kwrd&#034;&gt;public&lt;/span&gt; &lt;span class=&#034;kwrd&#034;&gt;void&lt;/span&gt; MakeSureFileWasSaved()
  {
      &lt;span class=&#034;rem&#034;&gt;//hook into system to make sure file was saved.  if it wasn&#039;t. ..&lt;/span&gt;
      wrong(currentParse, &lt;span class=&#034;str&#034;&gt;&#034;File wasn&#039;t saved.&#034;&lt;/span&gt;);

  }  

  &lt;span class=&#034;preproc&#034;&gt;@Override&lt;/span&gt;
  &lt;span class=&#034;kwrd&#034;&gt;protected&lt;/span&gt; Object interpretCells(Parse cells, Fixture fixture) {
    currentParse = cells;
    &lt;span class=&#034;kwrd&#034;&gt;return&lt;/span&gt; super.interpretCells(cells, fixture);
  }
}
&lt;/pre&gt;
&lt;p&gt;
&lt;style type=&#034;text/css&#034;&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, &#034;Courier New&#034;, courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;/p&gt;
&lt;p&gt;The key thing being to override interpretCells() rather than MethodCells().&lt;/p&gt;
&lt;p&gt;Note that this will mark the first cell of the current row as wrong. If you want to mark a different cell wrong (say the 3rd cell, for example) you would do this:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class=&#034;csharpcode&#034;&gt;  &lt;span class=&#034;kwrd&#034;&gt;public&lt;/span&gt; &lt;span class=&#034;kwrd&#034;&gt;void&lt;/span&gt; MakeSureFileWasSaved()
  {
      &lt;span class=&#034;rem&#034;&gt;//hook into system to make sure file was saved.  if it wasn&#039;t. ..&lt;/span&gt;
      wrong(currentParse.more.more, &lt;span class=&#034;str&#034;&gt;&#034;File wasn&#039;t saved.&#034;&lt;/span&gt;);

  }  
&lt;/pre&gt;
&lt;style type=&#034;text/css&#034;&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, &#034;Courier New&#034;, courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;The other cool trick that I am using in my current project is to use the abandonStorytest() method, which also requires the currentParse. &lt;/p&gt;
&lt;p&gt;I am using FitNesse to do integration testing and it connects to a database. One thing it does it clean up all the &#039;test&#039; data. To ensure that the tests don&#039;t accidentally delete data in a database that isn&#039;t a &#039;development&#039; database, there is a check in the FitNesse page that checks for non-developer databases and stops the test cold (i.e., it never gets to the &#034;clean up all our test data&#034; cell of the table). &lt;/p&gt;
&lt;div class=&#034;wlWriterSmartContent&#034; id=&#034;scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1f3c8edc-863a-4d5a-b123-ddc8dadc7621&#034; style=&#034;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&#034;&gt;Technorati Tags: &lt;a href=&#034;http://technorati.com/tags/agile&#034; rel=&#034;tag&#034;&gt;agile&lt;/a&gt;,&lt;a href=&#034;http://technorati.com/tags/testing&#034; rel=&#034;tag&#034;&gt;testing&lt;/a&gt;,&lt;a href=&#034;http://technorati.com/tags/fitnesse&#034; rel=&#034;tag&#034;&gt;fitnesse&lt;/a&gt;&lt;/div&gt;
        </description>
      
      
    
  </item>
  
  <item rdf:about="http://donie.homeip.net:8080/pebble/Steve/2007/03/09/1173455460000.html">
    <title>Continuous Integration and Testing Conference coming to Texas</title>
    <link>http://donie.homeip.net:8080/pebble/Steve/2007/03/09/1173455460000.html</link>
    
      
        <description>
          The &lt;a href=&#034;http://www.citconf.com./index.php&#034;&gt;Continuous Integration and Testing Conference&lt;/a&gt; is coming to Texas! The folks doing this conference (Paul Julius of Thoughtworks and Jeffrey Frederick of Agitar) have done 2 of these before, and all the reports I have heard have been good. I just registered, although it means that I will be out of town, away from family, and doing &#034;work-related stuff&#034; on the day before my 40th birthday! 
&lt;ul&gt;
&lt;li&gt;What: OpenSpace event discussing all aspects of CI and Testing, together&lt;/li&gt;
&lt;li&gt;Where: American Airlines Training &amp; Conference Center, Fort Worth, Texas&lt;/li&gt;
&lt;li&gt;When: Friday and Saturday, April 27 &amp; 28, 2007&lt;/li&gt;
&lt;li&gt;Who: Everyone interested in CI and Testing&lt;/li&gt;
&lt;li&gt;Cost: Free&lt;/li&gt;
&lt;/ul&gt;
Click the link above for all the details and to register. Limited to the first 100 folks, so get going!
&lt;hr/&gt;
&lt;h1&gt;Update&lt;/h1&gt;
&lt;b&gt;Argh!!!!&lt;/b&gt; I looked at my calendar and it turns out I will not be able to go to this after all. Hopefully someone else from DrillingInfo will be able to go.
        </description>
      
      
    
  </item>
  
  <item rdf:about="http://donie.homeip.net:8080/pebble/Steve/2007/03/05/1173077880000.html">
    <title>The Old New Thing : The .Default user is not the default user</title>
    <link>http://donie.homeip.net:8080/pebble/Steve/2007/03/05/1173077880000.html</link>
    
      
        <description>
          Something I needed to know the other day, setting up the screensaver on my electronic photo frame (it runs Windows).

&lt;a href=&#034;http://blogs.msdn.com/oldnewthing/archive/2007/03/02/1786493.aspx&#034;&gt;The Old New Thing : The .Default user is not the default user&lt;/a&gt;


        </description>
      
      
    
  </item>
  
  <item rdf:about="http://donie.homeip.net:8080/pebble/Steve/2007/03/02/1172875065343.html">
    <title>My first experience with WATIR</title>
    <link>http://donie.homeip.net:8080/pebble/Steve/2007/03/02/1172875065343.html</link>
    
      
        <description>
          &lt;p&gt;I got an actual test plan for a new feature today - a list of manual test steps. I&#039;ve been wanting to try out WATIR (Web Application Testing In Ruby) after learning about it from one of its creators, &lt;a href=&#034;http://www.pettichord.com/&#034;&gt;Bret Pettichord&lt;/a&gt;, who I had the pleasure of working with at DataCert. This seemed like the perfect chance to do something fun and useful.&amp;nbsp;&lt;/p&gt; &lt;p&gt;I started by getting confused. I googled &#034;WATIR&#034; and got a couple of links on the first page - one to wtr.rubyforge.org that looked promising, but also a link to openqa.org. After poking around a bit on both sites, I figured out that the current stable production version (and previous versions) are on rubyforge, but the team is moving things over to openqa. &lt;/p&gt; &lt;p&gt;I decided I wanted to start with the stable version of WATIR for now (1.4.1), so from the homepage at &lt;a href=&#034;http://www.openqa.org/watir/&#034;&gt;OpenQA&lt;/a&gt;, I first linked to the ruby installer - some difficulty there, as I got the most recent version (1.8.5-24), but later discovered that the &#039;modal dialog&#039; functionality in Watir is only supported in an older version (&lt;a href=&#034;http://rubyforge.org/frs/download.php/4174/ruby182-15.exe&#034;&gt;1.8.2-15 is what I ended up installing&lt;/a&gt;). The next slightly confusing thing is that there are a couple of ways to install watir. There is an installer, or you can install it as a Ruby &#039;gem&#039;. The main difference in 1.4.1 is that the installer creates some start menu shortcuts and includes some examples and unit tests. The gem install is pretty much just the core functionality. I went with the &lt;a href=&#034;http://rubyforge.org/frs/download.php/5677/watir-1.4.1.exe&#034;&gt;1.4.1 installer at RubyForge&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;After getting all that set up, I finally got to start playing with it. I started by just running the watir unit tests. I installed to c:\watir, so just doing start-&amp;gt;run and typing in&amp;nbsp;c:\Watir\unittests\all_tests.rb made it start going. When I first did this I discovered the issue with the modal dialogs - there is a test for that, and when it gets to that point a dialog pops up asking you to press OK. You can press OK manually, but after that the test just hangs and you have to use Process Explorer or Task Manager to kill the wayward ruby processes. There is also another issue with the 1.4.1 install - it doesn&#039;t copy some of the images used in the html of the tests, so there are some breakages there. I checked out the watir source from subversion (&lt;a href=&#034;https://svn.openqa.org/svn/watir/trunk/&#034;&gt;https://svn.openqa.org/svn/watir/trunk/&lt;/a&gt;) and then copied the images from there to my watir installation. Some of the docs at the new OpenQA site indicate that the dev team is working on the packaging in the 1.5 version. &lt;/p&gt; &lt;p&gt;Going back to Ruby 1.8.2-15 was supposed to have fixed the problem with the modal dialogs, but so far I haven&#039;t been able to get the unit tests to run all the way through. In any case, it is fun to watch them all run! &lt;/p&gt; &lt;p&gt;Next step was to go through the a tutorial I found at &lt;a href=&#034;http://wtr.rubyforge.org/s101/doc/&#034;&gt;http://wtr.rubyforge.org/s101/doc/&lt;/a&gt;. I went through several steps, trying out watir interactively using irb. That is pretty cool. Definitely print out the &lt;a href=&#034;http://wtr.rubyforge.org/s101/doc/Ruby-cheat-sheet.doc&#034;&gt;Ruby Cheat Sheet&lt;/a&gt; and the &lt;a href=&#034;http://wtr.rubyforge.org/s101/doc/Watir-cheat-sheet.doc&#034;&gt;Watir Cheat Sheet&lt;/a&gt; to help with that. While that is fun, and will probably be a powerful tool in the future,&amp;nbsp;I wanted to be able to move a little faster. A bit more googling led me to some posts by Scott Hanselman about his &#039;WatirMaker&#039;, which has since evolved into a whole &lt;a href=&#034;http://www.openqa.org/watir-recorder/&#034;&gt;watir-recorder project at OpenQA&lt;/a&gt;. There are a couple versions of recorders there - WatirRecoirder C#, WatinRecorder C#, and a ruby version. Getting a pre-compiled binary wasn&#039;t working for me,&amp;nbsp;so I just &lt;a href=&#034;http://www.openqa.org/watir-recorder/cvs.action&#034;&gt;checked out the source&lt;/a&gt; and ran the ruby version. I wrapped it in a little batch file to redirect the output to a file, and made a small change to the recorder to have all the &#034;puts&#034; calls go through a new method &#039;record&#039; that did a puts to both $stdout and $stderr so that I could redirect to a file AND see what it was doing. Hacky, I know. &lt;/p&gt; &lt;p&gt;You will probably also want to &lt;a href=&#034;http://rubyforge.org/mailman/listinfo/wtr-general&#034;&gt;sign up for the wtr-general mailing list&lt;/a&gt; to get your questions answered. &lt;/p&gt; &lt;p&gt;So here is the step-by-step:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;a href=&#034;http://rubyforge.org/frs/download.php/4174/ruby182-15.exe&#034;&gt;Install Ruby 1.8.2-15 from RubyForge&lt;/a&gt;  &lt;li&gt;&lt;a href=&#034;http://rubyforge.org/frs/download.php/5677/watir-1.4.1.exe&#034;&gt;Install Watir 1.4.1 using the installer&lt;/a&gt; (Also on RubyForge)  &lt;li&gt;get the watir recorder from OpenQA&lt;br&gt;&lt;a href=&#034;http://svn.openqa.org/svn/watir-recorder/trunk&#034;&gt;http://svn.openqa.org/svn/watir-recorder/trunk&lt;/a&gt;  &lt;li&gt;Write and/or record tests!&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;So far, I am pretty excited about this. I&#039;ve shown it to several people in my company, and that excitement is spreading. I even showed it to one of our internal users, and suggested that they might be able to use the recorder to document bugs - wouldn&#039;t that be cool? We still have a long way to go - coming up with a way to structure the tests, integrate them into our build system, and (if we record tests) refactoring the tests to start creating a library of common functions that could be re-used across tests - but it looks like a good start.&lt;/p&gt; &lt;p&gt;Here is the batch file I used to wrap WatirMaker.rb, which I got from &lt;a href=&#034;https://svn.openqa.org/svn/watir-recorder/trunk/Ru...&#034;&gt;https://svn.openqa.org/svn/watir-recorder/trunk/Ru...&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;code&gt;@echo off&lt;br&gt;&lt;/code&gt;&lt;code&gt;if .%1.==.. goto :GET_NAME&lt;br&gt;set TestName=%1&lt;br&gt;if exist %TestName% echo That test already exists &amp;amp; goto :EOF&lt;br&gt;goto :RECORD_TEST&lt;br&gt;&lt;br&gt;:GET_NAME&lt;br&gt;set /p TestName=Please enter the name of the test: &lt;br&gt;&lt;br&gt;:RECORD_TEST&lt;br&gt;title Recording %TestName%&lt;br&gt;ruby WatirMaker.rb &amp;gt; %TestName%&lt;br&gt;&lt;/code&gt;&lt;/p&gt; &lt;p&gt;If you do a search/replace in WatirMaker.rb and replace &#034;puts&#034; with &#034;record&#034; and then add the method below, it will work for you like it did for me. Next thing is to have it take a command line argument that is the name of the file so that ruby itself can write to the file rather than using shell redirection.&lt;/p&gt; &lt;p&gt;&lt;code&gt;##//////////////////////////////////////////&lt;br&gt;##&lt;br&gt;## send the output to stdout and to stderr, &lt;br&gt;## to allow the script to show the recording &lt;br&gt;## as it is happening as well&amp;nbsp;as to a file. &lt;br&gt;##&lt;br&gt;##//////////////////////////////////////////&lt;br&gt;def record(message)&lt;br&gt;$stdout.puts message&lt;br&gt;$stderr.puts message&lt;br&gt;end &lt;/p&gt;&lt;/code&gt;
        </description>
      
      
    
  </item>
  
  <item rdf:about="http://donie.homeip.net:8080/pebble/Steve/2007/03/02/1172854856750.html">
    <title>Using version control with FitNesse, revisited</title>
    <link>http://donie.homeip.net:8080/pebble/Steve/2007/03/02/1172854856750.html</link>
    
      
        <description>
          &lt;p&gt;&lt;/p&gt; &lt;p&gt;I have &lt;a href=&#034;http://codebetter.com/blogs/jeffrey.palermo/archive/2005/09/13/131922.aspx&#034;&gt;written before about using subversion to provide source control for FitNesse tests&lt;/a&gt;, but we eventually abandoned that process because of difficulties with using the refactoring support built into FitNesse. We moved to a system where all edits to test pages were made on the shared FitNesse server, and if a developer needed to get those to their machine, they would use the wiki import feature. The problem was that we lost version control of the tests. Mike Roberts has also &lt;a href=&#034;http://www.mikebroberts.com/blog/archive/Tech/Tools/WikisandSourceControl%28withFitnesse,SubversionandCruiseControl.NET%29.html&#034;&gt;written about a system&lt;/a&gt;&amp;nbsp;that is a little closer to what Jeffrey and I did. &amp;nbsp; &lt;p&gt;Here is another suggestion from Andrew McDonagh&amp;nbsp;that was posted to the FitNesse users list. I&#039;ve formatted his email and removed some of the location details.  &lt;blockquote&gt; &lt;p&gt;We have always checked our FitNesse pages into source control....  &lt;p&gt;This is how we do it....  &lt;p&gt;&lt;strong&gt;The Shared Server&lt;/strong&gt;&lt;br&gt;The FitNesse server for testing &amp;lt;our app&amp;gt; currently runs on http:/some.server. This server is a read only server and the wiki pages should not be updated here. The Acceptance Test pages on this server are automatically updated every few minutes from subversion.  &lt;p&gt;&lt;strong&gt;Editing the FitNesse Wiki Pages&lt;/strong&gt;&lt;br&gt;If you wish to edit the Acceptance Test pages, you need to install FitNesse locally on your machine. Please see the &amp;lt;our app&amp;gt; FitNesse Install instructions on how to do this (basically we have version controlled the download from fitnesse.org).  &lt;p&gt;&lt;strong&gt;Setup&lt;/strong&gt;&lt;br&gt;The next step will be to get the AcceptanceTest directory from subversion onto your local machine. To do this, use svn checkout from&amp;nbsp;&amp;lt;subversion&amp;nbsp;URL&amp;gt;&amp;nbsp;to S:\AcceptanceTest. Under this directory is a file and a folder that are used for editing these pages.  &lt;p&gt;S:\AcceptanceTest\FitServer.bat - this is a batch file that will start the fit server on your machine.&lt;br&gt;S:\AcceptanceTest\FitNesseRoot - this is the directory that contains all the files for the wiki pages.&lt;br&gt;Start the FitNesse server on your own machine by running the FitServer.bat file.  &lt;p&gt;&lt;strong&gt;Local edits&lt;/strong&gt;&lt;br&gt;To edit the pages on your machine, please use the fitnesse wiki interface provided. Connect to your machine and make the relevant changes. After you have finished your changes, and you will need to commit the changes for them to be visible to other users.  &lt;p&gt;&lt;strong&gt;Saving changes back to the repository&lt;/strong&gt;&lt;br&gt;Using TortoiseSVN, right-click on the S:\AcceptanceTest\FitNesseRoot directory and select SVN Commit. You will be presented with a log message window. In the bottom half of this window, there will be a list of &#039;unversioned&#039; files. You need to right-click add these directories and files except for *.zip files. The ZIP files are the incremental revisions that the Wiki (it&#039;s own internal revision control system). For these ZIP files, after you have added the directory that they live in, you can use svn ignore to hide these files (right-click-&amp;gt;TortoiseSVN-&amp;gt;add to ignore list).  &lt;p&gt;&lt;strong&gt;Running Tests-The Official Way&lt;/strong&gt;&lt;br&gt;If you want to run the current suite of tests, please use the shared server.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;As with our system, this will also have difficulties when you use the wiki refactoring tools (which are great to have). In this case, however, since each developer/tester is doing subversion commits manually (rather than the automatic commits on the server that we were doing in our system), people can note that certain files are missing and mark them as deleted in subversion,&amp;nbsp;and add the new files as if they were brand new. Sounds like a pretty good setup.&lt;/p&gt;
        </description>
      
      
    
  </item>
  
  <item rdf:about="http://donie.homeip.net:8080/pebble/Steve/2007/01/13/1168715889382.html">
    <title>Playing Blog Tag</title>
    <link>http://donie.homeip.net:8080/pebble/Steve/2007/01/13/1168715889382.html</link>
    
      
        <description>
          &lt;p&gt;It was so nice of &lt;a href=&#034;http://codebetter.com/blogs/jeremy.miller/default.aspx&#034;&gt;Jeremy&lt;/a&gt; to include me in the game. The hard part for me will be coming up with 5 people I know who have blogs and who haven&#039;t already been tagged! Here&#039;s my list:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;I consider myself an above-average woodworker. I used to do a lot more before I had kids, but I do still find some time to build things. Here are just a few of my projects:&lt;br&gt;&lt;img style=&#034;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&#034; height=&#034;240&#034; alt=&#034;drop leaf table and china cabinet&#034; src=&#034;http://donie.homeip.net:8080/pebble/Steve/images/PlayingBlogTag_BCFA/ThedropleaftableandchinacabinetIbuil.jpg&#034; width=&#034;188&#034; border=&#034;0&#034;&gt;&lt;br&gt;drop leaf table and cabinet&lt;br&gt;&lt;br&gt;&lt;a href=&#034;http://donie.homeip.net:8080/pebble/Steve/images/PlayingBlogTag_BCFA/200401241510571.jpg&#034; atomicselection=&#034;true&#034;&gt;&lt;img style=&#034;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&#034; height=&#034;180&#034; alt=&#034;trestle table&#034; src=&#034;http://donie.homeip.net:8080/pebble/Steve/images/PlayingBlogTag_BCFA/20040124151057.jpg&#034; width=&#034;240&#034; border=&#034;0&#034;&gt;&lt;/a&gt;&lt;br&gt;trestle table (has seen lots of use!)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&lt;br&gt;&lt;a href=&#034;http://donie.homeip.net:8080/pebble/Steve/images/PlayingBlogTag_BCFA/200401031012151.jpg&#034; atomicselection=&#034;true&#034;&gt;&lt;img style=&#034;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&#034; height=&#034;180&#034; alt=&#034;book shelf for the kid&#039;s school (#7 of 8!)&#034; src=&#034;http://donie.homeip.net:8080/pebble/Steve/images/PlayingBlogTag_BCFA/20040103101215.jpg&#034; width=&#034;240&#034; border=&#034;0&#034;&gt;&lt;/a&gt;&amp;nbsp;&lt;br&gt;bookshelf for the kids&#039; school (#7 of 8!)&lt;br&gt; &lt;li&gt;&lt;a href=&#034;http://en.wikipedia.org/wiki/Scott_Donie&#034;&gt;My brother&lt;/a&gt; won a silver medal diving from the 10M platform at the 1992 Barcelona Summer Olympics, and got 4th on 3M at the 1996 Atlanta games. I was also a diver from the time I was 7 until I was about 13, when he started getting better than me :-). I retired from diving for several years, but got back into it in High School so I wouldn&#039;t have to take &#039;regular&#039; PE.  &lt;li&gt;I started high school in New Jersey, where I grew up. Since I had retired from diving, I took up wrestling my freshman year. I was quite small - I wrestled in the 95 lbs and under category my whole freshman year. I had a winning season. Then we moved to Texas, where boys play football, they don&#039;t wrestle. &amp;nbsp;  &lt;li&gt;I used to race &lt;a href=&#034;http://www.scca.com/Solo/Solo2.asp&#034;&gt;SCCA Autocross&lt;/a&gt; when I was in college. I had a 1985&amp;nbsp;Dodge Omni that I had painted black and put low profile tires on, along with the ground effects kit that Dodge used on what they called the &#034;&lt;a href=&#034;http://www.joink.com/homes/users/cooke/86GLHT/86GLHT.html&#034;&gt;GLH&lt;/a&gt;&#034;. It was a Carroll Shelby project, back when he worked at Chrysler. It was a fun car, and I raced it for a couple of seasons on and off until I threw a connecting rod in the engine one day (not while racing - just pulling&amp;nbsp; into a gas station). I had to borrow money from my parents to get a rebuilt engine put in it, and decided to give up the racing. One day I intend to get back into it - several guys at my current job are quite active in the Austin &lt;a href=&#034;http://www.spokes.org/&#034;&gt;Spokes Sports Car Club&lt;/a&gt;.  &lt;li&gt;When I was at the Air Force Academy, in between my freshman and sophmore years, we had to take two &#039;classes&#039; during the summer. One (SERE, or Survival, Evasion, Resistance, and Escape) was required. The other part you could choose between freefall parachuting and gliders. I chose gliders and got to &lt;a href=&#034;http://www.usafa.af.mil/tu/306ftg/94fts/programs.cfm&#034;&gt;solo a glider&lt;/a&gt; (or sailplane, as they are sometimes known) during the class. Another thing that I would love to have the time and money to do again!&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;OK, there are my five things. Now I&#039;m supposed to &#039;tag&#039; 5 more. I know 3, so here they are, in no particular order...&lt;/p&gt; &lt;p&gt;&lt;a href=&#034;http://codebetter.com/blogs/scott.bellware/default.aspx&#034;&gt;Scott Bellware&lt;/a&gt;, &lt;a href=&#034;http://danielmassey.blogspot.com/index.html&#034;&gt;Daniel Massey&lt;/a&gt;, &lt;a href=&#034;http://geekswithblogs.net/bcaraway/&#034;&gt;Blake Caraway&lt;/a&gt;&lt;/p&gt;
        </description>
      
      
    
  </item>
  
  <item rdf:about="http://donie.homeip.net:8080/pebble/Steve/2006/11/10/1163223841293.html">
    <title>Fun with GeoTagging</title>
    <link>http://donie.homeip.net:8080/pebble/Steve/2006/11/10/1163223841293.html</link>
    
      
        <description>
          &lt;p&gt;I&#039;ve recently started playing with geotagging - adding location information to my photos. The basic idea is that you have a GPS keeping track of your location while you are taking photos, and then when you get back you can look through the GPS logs to see where you were when a picture was taken and add that information to the photo. I found a tool called GPSU that downloads the data from my Magellan SportTrak, and can save it as a .gpx file (GPS in XML). Then I run a perl script called gpsphoto that looks at a directory full of photos and the GPX file and finds the photos that have a time stamp matching timestamps in the GPX file. The final output is that each photo gets EXIF tags of Lat, Long, and altitude, plus a google earth .kml file that shows the track as well as &#039;pushpins&#039; for each photo. Pretty cool. Here are my first two. If you have Google Earth installed, these will open in that. &lt;/p&gt; &lt;p&gt;&lt;a href=&#034;http://donie.homeip.net:8080/pebble/Steve/files/2006-10-LakeTravisWeekendTrip.kml&#034; rel=&#034;nofollow&#034;&gt;Lake Travis Trip&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&#034;http://donie.homeip.net:8080/pebble/Steve/files/2006-10-Trip.kml&#034; rel=&#034;nofollow&#034;&gt;Lake Austin Trip&lt;/a&gt;&lt;/p&gt;
        </description>
      
      
    
  </item>
  

</rdf:RDF>
