<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Article RSS Feed</title>
    <link>http://www.beyondthetype/rss/</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>The main blog feed for my Web site.</description>
    
    
        <item>
          <title>Spy on external HTTP API requests in Rails </title>
          <description>&lt;p&gt;&lt;img src=&quot;http://beyondthetype.com/assets/12/apaye.png&quot; style=&quot;float:left; padding: 3px;&quot; alt=&quot;A.P. AYE&quot; /&gt;
Ever had to use a third party API through a gem or library in your
Rails app and wondered where the requests are going to? &lt;/p&gt;

&lt;p&gt;Through the magic of &lt;a href=&quot;http://github.com/martinbtt/net-http-spy&quot;&gt;Net HTTP Spy&lt;/a&gt;
(a little gem I wrote) you can spy on the majority of HTTP traffic to external
API&amp;#8217;s taking place in your Rails application.  &lt;/p&gt;

&lt;h3&gt;Installation&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;&lt;pre&gt;sudo gem install martinbtt-net-http-spy&lt;/pre&gt;&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;Real World Example using Google Data API&amp;#8217;s&lt;/h3&gt;

&lt;p&gt;You can now get access to pretty much any Google
application/content through their &lt;a href=&quot;http://code.google.com/apis/gdata/docs/directory.html&quot;&gt;comprehensive set of API&amp;#8217;s&lt;/a&gt; - very handy indeed.&lt;/p&gt;

&lt;p&gt;In this example we are going to use the &lt;a href=&quot;http://doclistmanager.googlecodesamples.com/&quot;&gt;DocList manager sample application&lt;/a&gt; as seen on
the &lt;a href=&quot;http://code.google.com/apis/gdata/articles/gdata_on_rails.html&quot;&gt;GData on Rails tutorial pages&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;First grab the source:
&lt;code&gt;&lt;pre&gt;svn co http://gdata-samples.googlecode.com/svn/trunk/doclist/DocListManager&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;Then create a new file initializers/api_logging.rb and add the following:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;pre&gt;
if ENV.has_key?('API_LOGGING')
  gem 'martinbtt-net-http-spy'
  require 'net-http-spy'
  Net::HTTP.http_logger = Rails.logger
  Net::HTTP.http_logger_options = {:body =&gt; true} if ENV['API_LOGGING_FULL']
end
&lt;/pre&gt;&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;Sample Usage and Output:&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;&lt;pre&gt;API_LOGGING=true ./script/server
Processing DoclistController#documents (for 127.0.0.1 at 2009-11-14 20:24:47) [POST]
  Parameters: {&quot;authenticity_token&quot;=&gt;&quot;76e735433a9459f28a2dfb23090dec203b73e65c&quot;}
CONNECT: [&quot;docs.google.com&quot;, 80]
GET /feeds/default/private/full/-/document/mine
PARAMS {} 
BODY: Net::HTTPOK
Rendered doclist/&lt;em&gt;documents&lt;/em&gt;list (7.4ms)
Completed in 1672ms (View: 11 | 200 OK [http://localhost/]&lt;/p&gt;

&lt;p&gt;Processing DoclistController#show (for 127.0.0.1 at 2009-11-14 20:24:49) [POST]
  Parameters: {&quot;url&quot;=&gt;&quot;http://docs.google.com/feeds/default/private/full/document:0BUjxlHAOrFICZGh1aGdrZ18xM2ZudGt3M2Zz&quot;, &quot;authenticity_token&quot;=&gt;&quot;76e735434a9459f08a2dfb23090dec203b73e65c&quot;}
CONNECT: [&quot;docs.google.com&quot;, 80]
GET /feeds/default/private/expandAcl/document:0BUjxlHAOrFICZGh1aGdrZ18xM2ZudGt3M2Zz
PARAMS {} 
BODY: Net::HTTPOK
CONNECT: [&quot;docs.google.com&quot;, 80]
GET /feeds/download/documents/Export?docID=0BUjxlHAOrFICZGh1aGdrZ18xM2ZudGt3M2Zz&amp;amp;exportFormat=png
PARAMS {} 
BODY: Net::HTTPOK
Rendered doclist/_show (7.7ms)
Completed in 2515ms (View: 15 | 200 OK [http://localhost/doclist/show]
&lt;/pre&gt;&lt;/code&gt;  &lt;/p&gt;

&lt;p&gt;Note 1: By setting  API_LOGGING=full the BODY: portion of the logging output will be replaced with the
actual body response from the server. In this case it is the XML used to display the documents. &lt;/p&gt;

&lt;p&gt;Note 2: Not all API libs are built the same and many interact with Net::HTTP in ways not easy
to capture. Also be warned.. this modifies the Net::HTTP class directly so be careful if 
you intend using this in production.&lt;/p&gt;

&lt;h2&gt;Summary&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;http://github.com/martinbtt/net-http-spy&quot;&gt;Net HTTP spy&lt;/a&gt; provides a great way to peek at what is going on under the hood of your application and find out
which http requests are being made to third parties. I&amp;#8217;ve used this technique successfully with my team at work 
to track down API issues and I&amp;#8217;ve also had numerous reports of other developers making use of the gem for the same reasons. &lt;/p&gt;

&lt;p&gt;I hope you find this post helpful and if you have any further questions or feedback feel free to ask in the comments
section.&lt;/p&gt;

&lt;h2&gt;Quick Reference&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;HTTP Spy on GitHub: &lt;a href=&quot;http://github.com/martinbtt/net-http-spy&quot;&gt;http://github.com/martinbtt/net-http-spy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GData on Rails tutorials: &lt;a href=&quot;http://code.google.com/apis/gdata/articles/gdata_on_rails.html&quot;&gt;http://code.google.com/apis/gdata/articles/gdata_on_rails.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Google API Directory: &lt;a href=&quot;http://code.google.com/apis/gdata/docs/directory.html&quot;&gt;http://code.google.com/apis/gdata/docs/directory.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
          <pubDate>Mon, 16 Nov 2009 04:18:00 GMT</pubDate>
          <guid>http://www.beyondthetype.com/articles/2009/11/16/spy-on-external-http-api-requests-in-rails/</guid>
          <link>http://www.beyondthetype.com/articles/2009/11/16/spy-on-external-http-api-requests-in-rails/</link>
        </item>
    
        <item>
          <title>Edge Monkeybars</title>
          <description>&lt;p&gt;&lt;img src=&quot;http://beyondthetype.com/assets/10/monkey-keyboard.gif&quot; style=&quot;float: left; padding: 5px; width: 150px&quot; alt=&quot;monkey at keyboard&quot; /&gt;
&lt;a href=&quot;http://monkeybars.rubyforge.org&quot;&gt;Monkeybars&lt;/a&gt;  lets you create elegant looking cross platform desktop apps with &lt;a href=&quot;http://jruby.codehaus.org/&quot;&gt;JRuby&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;You&amp;#8217;ll want to play with the &lt;a href=&quot;http://gitorious.org/projects/monkeybars/repos/monkeybars-with-inline-ruby-swing&quot;&gt;latest&lt;/a&gt; and &lt;a href=&quot;http://gitorious.org/projects/monkeybars/repos/mainline&quot;&gt;greatest&lt;/a&gt; versions of &lt;a href=&quot;http://monkeybars.rubyforge.org&quot;&gt;Monkeybars&lt;/a&gt; without conflicting with your current gem install. Here is a little guide on how to do just that.&lt;/p&gt;

&lt;p&gt;&lt;br style=&quot;clear: both&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Download&lt;/h3&gt;

&lt;p&gt;Fire up a terminal and enter the following:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;pre&gt;mkdir -p ~/code/gems
git clone git://gitorious.org/monkeybars/mainline.git monkeybars-mainline
cd monkeybars-mainline
rake jar
mate ~/.bash_profile&lt;/pre&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This might take a while so grab a cup of coffee while you wait. At last count the Monkeybars repo was ~90MB.&lt;/p&gt;

&lt;h3&gt;Edit your bash profile&lt;/h3&gt;

&lt;p&gt;Once your bash profile pops up in Textmate add the following to the bottom of it:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;pre&gt;function monkeybars-edge() { 
 ruby ~/code/gems/monkeybars-mainline/bin/monkeybars $1 $2
}&lt;/pre&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Great, almost there. You&amp;#8217;ll just need to reload you bash profile, so either start a new terminal or run the following
&lt;code&gt;&lt;pre&gt;. ~/.bash_profile&lt;/pre&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Note the leading dot.&lt;/p&gt;

&lt;h3&gt;Result?&lt;/h3&gt;

&lt;p&gt;Lets see if that worked:
&lt;code&gt;&lt;pre&gt;
martin$ monkeybars-edge myapp
Creating directory myapp
Copying monkeybars project structure
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;Excellent. &lt;/p&gt;

&lt;h3&gt;Anything else?&lt;/h3&gt;

&lt;p&gt;The version of Monkeybars added to the classpath in src/manifest.rb is likely to be an older one. If you peek in the lib/java directory you&amp;#8217;ll see which version you have. Update the manifest line accordingly. In the example below it was  0.6.4 and I updated to 0.6.5.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;pre&gt;require 'resolver'&lt;/p&gt;

&lt;p&gt;case Monkeybars::Resolver.run_location
when Monkeybars::Resolver::IN_FILE_SYSTEM
  add_to_classpath '../lib/java/monkeybars-0.6.5.jar'
end
&lt;/pre&gt;&lt;/code&gt;&lt;/p&gt;</description>
          <pubDate>Thu, 04 Dec 2008 14:27:00 GMT</pubDate>
          <guid>http://www.beyondthetype.com/articles/2008/12/04/edge-monkeybars/</guid>
          <link>http://www.beyondthetype.com/articles/2008/12/04/edge-monkeybars/</link>
        </item>
    
        <item>
          <title>RailsConf Europe presentation slides now published</title>
          <description>&lt;p&gt;The presentation files from the talk I gave at RailsConf Europe are now available for download.&lt;/p&gt;

&lt;p&gt;Direct link: &lt;a href=&quot;http://assets.en.oreilly.com/1/event/13/Stories%20on%20a%20Cloud%20-%20Distributed%20Browser%20Testing%20with%20Selenium%20Presentation%201.pdf&quot;&gt;Stories on a Cloud - Distributed Browser Testing with Selenium Presentation&lt;/a&gt; (PDF format). &lt;/p&gt;

&lt;p&gt;I really enjoyed giving the talk and their seemed to be enough interest for follow up material. All good!
I&amp;#8217;ll be publishing supporting links and research details very soon, so watch this space.&lt;/p&gt;</description>
          <pubDate>Mon, 08 Sep 2008 15:45:00 GMT</pubDate>
          <guid>http://www.beyondthetype.com/articles/2008/09/08/railsconf-europe-presentation-slides-now-published/</guid>
          <link>http://www.beyondthetype.com/articles/2008/09/08/railsconf-europe-presentation-slides-now-published/</link>
        </item>
    
        <item>
          <title>Speaking at RailsConf Europe</title>
          <description>&lt;p&gt;A quick shout about our talk tomorrow at &lt;a href=&quot;http://www.railsconfeurope.com&quot;&gt;RailsConf Europe&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://www.beyondthetype.com/assets/6/stories_on_a_cloud.jpg&quot; alt=&quot;Stories on a Cloud - Distributed Browser Testing with Selenium&quot;/&gt;&lt;/p&gt;

&lt;p&gt;Drive your browser (or somebody else&amp;#8217;s!) through an RSpec story. In this talk I&amp;#8217;ll be covering Rspec stories, Selenium, message queues, packaging your apps for cross platform distribution, and more!&lt;/p&gt;

&lt;p&gt;Read more info over at the &lt;a href=&quot;http://en.oreilly.com/railseurope2008/public/schedule/detail/3507&quot;&gt;O&amp;#8217;Reilly Conference page&lt;/a&gt;&lt;/p&gt;</description>
          <pubDate>Tue, 02 Sep 2008 08:52:00 GMT</pubDate>
          <guid>http://www.beyondthetype.com/articles/2008/09/02/speaking-at-railsconf-europe/</guid>
          <link>http://www.beyondthetype.com/articles/2008/09/02/speaking-at-railsconf-europe/</link>
        </item>
    
        <item>
          <title>Is this thing on? Converted to Radiant from Mephisto</title>
          <description>&lt;p&gt;More news to follow shortly..&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://www.beyondthetype.com/assets/5/lightswitch_thumbnail.jpg&quot; alt=&quot;Light Switch&quot;/&gt;&lt;/p&gt;

&lt;p&gt;sneak peak: &lt;a href=&quot;http://github.com/martinbtt/radiant-import-mephisto&quot;&gt;http://github.com/martinbtt/radiant-import-mephisto&lt;/a&gt;&lt;/p&gt;</description>
          <pubDate>Tue, 29 Jul 2008 15:16:00 GMT</pubDate>
          <guid>http://www.beyondthetype.com/articles/2008/07/29/is-this-thing-on-converted-to-radiant-from-mephisto/</guid>
          <link>http://www.beyondthetype.com/articles/2008/07/29/is-this-thing-on-converted-to-radiant-from-mephisto/</link>
        </item>
    
        <item>
          <title>New RSS feed URL</title>
          <description>&lt;p&gt;Just a quick note to say the RSS feed for this blog has changed. Please update your feed reader to use:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://feeds.feedburner.com/BeyondTheType&quot;&gt;http://feeds.feedburner.com/BeyondTheType&lt;/a&gt;&lt;/p&gt;</description>
          <pubDate>Thu, 03 Jan 2008 21:00:00 GMT</pubDate>
          <guid>http://www.beyondthetype.com/articles/2008/01/03/new-rss-feed-url/</guid>
          <link>http://www.beyondthetype.com/articles/2008/01/03/new-rss-feed-url/</link>
        </item>
    
        <item>
          <title>New Year, New start. Hello CitySafe</title>
          <description>&lt;p&gt;As of January this year I&amp;#8217;m pleased to announce I will be working with
the &lt;a href=&quot;http://workingwithrails.com/search?q=citysafe&quot;&gt;team&lt;/a&gt; at &lt;a href=&quot;http://www.citysafe.org&quot;&gt;CitySafe&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;CitySafe build tools to help emergency responders collaborate and communicate.
These include mission critical apps in use daily by the Police, Government, and high profile financial and retail institutions.
It&amp;#8217;s predominately Ruby (on Rails) based so I&amp;#8217;m looking forward to getting stuck in.&lt;/p&gt;

&lt;p&gt;For those of you wondering about &lt;a href=&quot;http://www.workingwithrails.com&quot;&gt;Working With Rails&lt;/a&gt;&amp;#8230;. 
This remains under ownership of  &lt;a href=&quot;http://www.dsc.net&quot;&gt;DSC&lt;/a&gt; and I have passed all the day to day running over to colleagues there.  Prior to my departure I ensured that the Hackfests would continue up until March. Much thanks goes to Josette @ &lt;a href=&quot;http://www.oreilly.com/&quot;&gt;O&amp;#8217;Reilly&lt;/a&gt; for the &lt;a href=&quot;http://www.railsconf.com&quot;&gt;RailsConf&lt;/a&gt; ticket prizes.&lt;/p&gt;

&lt;p&gt;All in all WWR has been an amazing project. I&amp;#8217;m so pleased to have created it and see it grow from strength to strength benefiting the community so greatly. Many thanks to everyone who uses the site and contributed in some way over the past year. It has been fantastic to have your input and feedback. &lt;/p&gt;

&lt;p&gt;I&amp;#8217;ve heard many success stories from developers starting user groups as a result of finding each other on WWR, to getting a job through recommendations, collaborating on projects or helping to get Rails adopted in their workplace.
Not forgetting to mention the numerous prizes given away through the regular Hackfests. &lt;/p&gt;

&lt;p&gt;I hope it has benefited you in some way and continues to do so.  Thanks everyone! &lt;/p&gt;

&lt;p&gt;Stay tuned&amp;#8230; &lt;/p&gt;

&lt;p&gt;Continue to keep up with my news via this blog (&lt;a href=&quot;http://feeds.feedburner.com/BeyondTheType&quot;&gt;rss&lt;/a&gt;) and via &lt;a href=&quot;http://twitter.com/martinbtt&quot;&gt;Twitter&lt;/a&gt;&lt;/p&gt;</description>
          <pubDate>Wed, 02 Jan 2008 21:05:00 GMT</pubDate>
          <guid>http://www.beyondthetype.com/articles/2008/01/02/new-year-new-start-hello-citysafe/</guid>
          <link>http://www.beyondthetype.com/articles/2008/01/02/new-year-new-start-hello-citysafe/</link>
        </item>
    
        <item>
          <title>VirtueDesktops alternative for OS X 10.5 (Leopard)</title>
          <description>&lt;p&gt;Just upgraded to &lt;a href=&quot;http://www.apple.com/macosx/&quot;&gt;Leopard&lt;/a&gt; and sad at the loss of &lt;a href=&quot;http://virtuedesktops.info/&quot;&gt;VirtueDestkops&lt;/a&gt;? &lt;a href=&quot;http://www.apple.com/macosx/features/spaces.html&quot;&gt;Spaces&lt;/a&gt;  not doing it for you? Read on&amp;#8230;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://www.beyondthetype.com/assets/2007/11/19/virtuedesktops_icon.png&quot; style=&quot;width: 200px; float: left&quot;/&gt; 
&lt;img src=&quot;http://www.beyondthetype.com/assets/2007/11/19/spaces_hero20071016.png&quot;  style=&quot;width: 300px; float: right&quot; /&gt; &lt;/p&gt;

&lt;p&gt;&lt;br style=&quot;clear: both&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Background&lt;/h3&gt;

&lt;p&gt;When Leopard was announced &lt;a href=&quot;http://www.apple.com/macosx/features/spaces.html&quot;&gt;Spaces&lt;/a&gt; was touted as the replacement for &lt;a href=&quot;http://virtuedesktops.info/&quot;&gt;VirtueDesktops&lt;/a&gt;. This lead to &lt;a href=&quot;http://www.tonyarnold.com/&quot;&gt;Tony Arnold&lt;/a&gt; the main developer of &lt;a href=&quot;http://virtuedesktops.info/&quot;&gt;VirtueDesktops&lt;/a&gt; downing tools and declaring VirtueDesktops dead.&lt;/p&gt;

&lt;p&gt;So everybody waited in anticipation for OS X 10.5&amp;#8230;  only to find &lt;a href=&quot;http://blogs.sun.com/bblfish/entry/why_apple_spaces_is_broken&quot;&gt;Spaces not living up to their expectations&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;So why the big fuss?&lt;/h3&gt;

&lt;p&gt;With the advent of 10.5 Apple has tightened up the code such that no other Desktop managers properly work on top of Leopard. This leaves many followers of VirtueDesktops little or no choice than maybe to change their working practices to Spaces or find alternatives&amp;#8230;.&lt;/p&gt;

&lt;h4&gt;1. HyperSpaces&lt;/h4&gt;

&lt;p&gt;From the &lt;a href=&quot;http://www.tonyarnold.com/&quot;&gt;creator&lt;/a&gt; of &lt;a href=&quot;http://virtuedesktops.info/&quot;&gt;VirtueDesktops&lt;/a&gt; comes &lt;a href=&quot;http://www.tonyarnold.com/projects/hyperspaces/&quot;&gt;HyperSpaces&lt;/a&gt;. Unfortunately this isn&amp;#8217;t set for launch until 2008 and it also isn&amp;#8217;t clear if it will have the same rich feature set that VirtueDesktops has.  &lt;/p&gt;

&lt;h4&gt;2. YouControlDesktops&lt;/h4&gt;

&lt;p&gt;&lt;img src=&quot;http://www.beyondthetype.com/assets/2007/11/19/desktops_icon.gif&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.yousoftware.com&quot;&gt;YouControlDesktops&lt;/a&gt; has probably the closest functionality you are going to get to VirtueDesktops. The interface for configuring things isn&amp;#8217;t as intuitive or slick as Virtue but it&amp;#8217;s not such a big deal since you&amp;#8217;ll not need to use it that often.&lt;/p&gt;

&lt;p&gt;Currently there is a &lt;a href=&quot;http://www.yousoftware.com/beta/&quot;&gt;beta version for 10.5&lt;/a&gt; that works pretty well but there is some kinks. Namely issues with the Dock not always getting context when it should. &lt;/p&gt;

&lt;p&gt;So in summary the solution is not perfect but it&amp;#8217;s the best I&amp;#8217;ve found so far. Download the beta and provide the developers with feedback, hopefully we can help push this forward.&lt;/p&gt;</description>
          <pubDate>Wed, 21 Nov 2007 10:51:00 GMT</pubDate>
          <guid>http://www.beyondthetype.com/articles/2007/11/21/virtuedesktops-alternative-for-os-x-10-5-leopard/</guid>
          <link>http://www.beyondthetype.com/articles/2007/11/21/virtuedesktops-alternative-for-os-x-10-5-leopard/</link>
        </item>
    
        <item>
          <title>Mephisto gets a core team</title>
          <description>&lt;p&gt;Good news for &lt;a href=&quot;http://mephistoblog.com/&quot;&gt;Mephisto&lt;/a&gt; users. The core team has been decided and the ideas for the 1.0 release are &lt;a href=&quot;http://groups.google.com/group/MephistoBlog/browse_thread/thread/cfab35b910aae7f0?hl=en&quot;&gt;being finalised&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Interestingly enough there may also be a push to switch over to using
&lt;a href=&quot;http://git.or.cz/&quot;&gt;Git&lt;/a&gt; which is gaining a bit of traction in the Rails community. 
I&amp;#8217;m an avid user of &lt;a href=&quot;http://svk.bestpractical.com/&quot;&gt;SVK&lt;/a&gt; and gave Git a try a while back but stopped
short after hearing tales of woe with git-svn&amp;#8230; I may revisit at
some point.&lt;/p&gt;</description>
          <pubDate>Mon, 22 Oct 2007 08:00:00 GMT</pubDate>
          <guid>http://www.beyondthetype.com/articles/2007/10/22/mephisto-gets-a-core-team/</guid>
          <link>http://www.beyondthetype.com/articles/2007/10/22/mephisto-gets-a-core-team/</link>
        </item>
    
        <item>
          <title>"script/generate undo" plugin released</title>
          <description>&lt;p&gt;Grab it while it&amp;#8217;s hot:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; script/plugin install svn://rubyforge.org/var/svn/beyondthetype/undo_generator_plugin/trunk
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Key Features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Undo any generator command &lt;/li&gt;
&lt;li&gt;Keeps a log of all generator history in log/generator.log&lt;/li&gt;
&lt;li&gt;Prompts before undo&amp;#8217;ing any commands&lt;/li&gt;
&lt;li&gt;Even works when you bail out of a generator command part way through&lt;/li&gt;
&lt;/ul&gt;</description>
          <pubDate>Wed, 26 Sep 2007 14:23:00 GMT</pubDate>
          <guid>http://www.beyondthetype.com/articles/2007/09/26/script-generate-undo-plugin-released/</guid>
          <link>http://www.beyondthetype.com/articles/2007/09/26/script-generate-undo-plugin-released/</link>
        </item>
    
    
  </channel>
</rss>

