<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Blah Blah Woof Woof</title>
    <link>http://vault.openmonkey.com/</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Blah Blah Woof Woof</description>
    <item>
      <title>To my lazy blogging friends</title>
      <description>&lt;p&gt;Write something!  It is up to you to stop &lt;a href="http://planet.botfu.org/"&gt;Planet Botfu&lt;/a&gt; turning into Planet &lt;em&gt;Safari_Al&lt;/em&gt;.&lt;/p&gt;</description>
      <pubDate>Thu,  4 Oct 2007 04:41:07 PDT</pubDate>
      <guid>http://vault.openmonkey.com/articles/2007/10/04/to-my-lazy-blogging-friends</guid>
      <link>http://vault.openmonkey.com/articles/2007/10/04/to-my-lazy-blogging-friends</link>
      <trackback:ping>http://vault.openmonkey.com/articles/trackback/98</trackback:ping>
    </item>
    <item>
      <title>Layer Tennis has begun again</title>
      <description>&lt;p&gt;Hey sports fans, forget the football this weekend, make sure you go check out the &lt;a href="http://layertennis.com/070928/"&gt;opening round&lt;/a&gt; of the new &lt;a href="http://layertennis.com/"&gt;Layer Tennis&lt;/a&gt; season: an engaging match between Shaun Inman and Kevin Cornell, with entertaining commentary by John Gruber.&lt;/p&gt;</description>
      <pubDate>Fri, 28 Sep 2007 17:23:48 PDT</pubDate>
      <guid>http://vault.openmonkey.com/articles/2007/09/28/layer-tennis-has-begun-again</guid>
      <link>http://vault.openmonkey.com/articles/2007/09/28/layer-tennis-has-begun-again</link>
      <category>Geek</category>
      <category>Tumble</category>
      <trackback:ping>http://vault.openmonkey.com/articles/trackback/97</trackback:ping>
    </item>
    <item>
      <title>Noteless</title>
      <description>&lt;p&gt;I am sitting in Adelaide airport waiting for my flight back to Canberra.  It has been delayed, so I thought I would make use of the extra time to write something here. However, all of my notes (including a list of topics on which I would like to write) are at home on &lt;a href="http://www.flyingmeat.com/voodoopad/"&gt;VoodooPads&lt;/a&gt;, and not on the laptop I have borrowed.&lt;/p&gt;

&lt;p&gt;At times like these, I wish I used online services a little more to keep track of lists and ideas.  However, the more clicks that it takes to achieve something, the less likely it is that I do it regularly.  So go and check out &lt;a href="http://jottit.com/"&gt;Jottit&lt;/a&gt;, an extremely simple and easy to use website/wiki creation tool.&lt;/p&gt;

&lt;p&gt;While it lacks some of the refinement of &lt;a href="http://backpackit.com/"&gt;Backpack&lt;/a&gt;, its simplicity (it is built around little more than a single text area for editing pages) makes it look like a quick and easy system to use.&lt;/p&gt;</description>
      <pubDate>Sun, 23 Sep 2007 23:02:00 PDT</pubDate>
      <guid>http://vault.openmonkey.com/articles/2007/09/23/noteless</guid>
      <link>http://vault.openmonkey.com/articles/2007/09/23/noteless</link>
      <category>Geek</category>
      <trackback:ping>http://vault.openmonkey.com/articles/trackback/96</trackback:ping>
    </item>
    <item>
      <title>Back on the ranch</title>
      <description>&lt;p&gt;I'll be back in Adelaide from Friday to Monday this coming weekend.  I'll be coaching during the days on Friday through to Sunday, but Saturday and Sunday nights are free.  If anyone is free and would like to catch up for a drink, drop me a line!&lt;/p&gt;</description>
      <pubDate>Tue, 18 Sep 2007 07:46:19 PDT</pubDate>
      <guid>http://vault.openmonkey.com/articles/2007/09/18/back-on-the-ranch</guid>
      <link>http://vault.openmonkey.com/articles/2007/09/18/back-on-the-ranch</link>
      <category>Life</category>
      <trackback:ping>http://vault.openmonkey.com/articles/trackback/95</trackback:ping>
    </item>
    <item>
      <title>Ready to Rumble</title>
      <description>&lt;p&gt;This weekend, &lt;a href="http://hughevans.net"&gt;Hugh&lt;/a&gt; and I will spend 48 hours building a new web app as part of the &lt;a href="http://www.railsrumble.com/"&gt;Rails Rumble&lt;/a&gt;. We're going to build something that I have personally wanted to use for a long time.  It should be a lot of fun!&lt;/p&gt;

&lt;p&gt;We may be looking for some beta testers, so feel free to register your interest here.  Anyway, watch this space, I will keep you all posted throughout the event!&lt;/p&gt;</description>
      <pubDate>Fri,  7 Sep 2007 01:36:00 PDT</pubDate>
      <guid>http://vault.openmonkey.com/articles/2007/09/07/ready-to-rumble</guid>
      <link>http://vault.openmonkey.com/articles/2007/09/07/ready-to-rumble</link>
      <category>Life</category>
      <category>Geek</category>
      <trackback:ping>http://vault.openmonkey.com/articles/trackback/94</trackback:ping>
    </item>
    <item>
      <title>CSS selectors in Prototype are a godsend</title>
      <description>&lt;p&gt;This week I have been working in some parts of an app that were written a long time ago and have not been touched since.&lt;/p&gt;

&lt;p&gt;I've had to resist the temptation to clean up &lt;em&gt;all&lt;/em&gt; the code, but a couple of things I could not just let be.&lt;/p&gt;

&lt;p&gt;Behold the ugly, &lt;em&gt;ugly&lt;/em&gt;, JS code used to select checkboxes within a particular div:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/* Iterates through all users within the TBODY and checks their checkboxes */ 
function markCheckboxesForDiv(tbody, value) { 
  for (i = 0; i &amp;lt; tbody.childNodes.length; i++) { 
    if (tbody.childNodes[i].tagName == 'DIV') { 
      for (j = 0; j &amp;lt; tbody.childNodes[i].childNodes.length; j++) { 

        if (tbody.childNodes[i].childNodes[j].tagName == 'DIV') { 
          for (k = 0; k &amp;lt; tbody.childNodes[i].childNodes[j].childNodes.length; k++) { 

            if (tbody.childNodes[i].childNodes[j].childNodes[k].tagName == 'SPAN') { 
              for (l = 0; l &amp;lt; tbody.childNodes[i].childNodes[j].childNodes[k].childNodes.length; l++) { 

                if (tbody.childNodes[i].childNodes[j].childNodes[k].childNodes[l].tagName == 'INPUT') { 
                  tbody.childNodes[i].childNodes[j].childNodes[k].childNodes[l].checked = value; 
                }
              }
            }
          }
        }
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Apart from the obvious problems with the  depply nested if statements, this code is strongly dependent on the structure of the page markup.  I actually broke it while making some unrelated changes.&lt;/p&gt;

&lt;p&gt;Here is the new version:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;function markCheckboxesForDiv(divname, value) {
  $$('#' + divname + ' input[type=checkbox]').each(function(f) {
    f.checked = value;
  });
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Much simpler, more robust and more loosely coupled thanks to the wonders of the CSS selector utility function from Prototype, &lt;a href="http://prototypejs.org/api/utility/dollar-dollar"&gt;dollar dollar&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Fri,  7 Sep 2007 00:51:00 PDT</pubDate>
      <guid>http://vault.openmonkey.com/articles/2007/09/07/css-selectors-in-prototype-are-a-godsend</guid>
      <link>http://vault.openmonkey.com/articles/2007/09/07/css-selectors-in-prototype-are-a-godsend</link>
      <category>Geek</category>
      <trackback:ping>http://vault.openmonkey.com/articles/trackback/93</trackback:ping>
    </item>
    <item>
      <title>&amp;quot;iPhone&amp;quot; applications, or The Mobile Web</title>
      <description>&lt;p&gt;Gruber &lt;a href="http://daringfireball.net/2007/06/wwdc_2007_keynote"&gt;wrote after the announcement of the iPhone&lt;/a&gt;, that:&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;Perhaps it’s playing well in the mainstream press, but here at WWDC, Apple’s “you can write great apps for the iPhone: they’re called ‘web sites’” — message went over like a lead balloon.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now that the &lt;a href="http://www.apple.com/ipodtouch/"&gt;iPod Touch&lt;/a&gt; has been announced with the inclusion of MobileSafari, this position that web apps are iPhone apps begins to make a lot more sense.&lt;/p&gt;

&lt;p&gt;The only Internet-enabled components from the iPhone that have found their way into the iPod Touch are the Safari and YouTube apps. Mail, maps, and widgets - the prime examples of rich native applications that put web apps to shame - remain only on the iPhone. Given that the iPod Touch is much more narrowly focused than the iPhone, this smaller selection of Internet-enabled apps may likely remain a key distinction between the two products.&lt;/p&gt;

&lt;p&gt;The release of this cheaper, more accessible, Wi-Fi enabled Apple device will no doubt bring a large influx of new MobileSafari users to the world. Designing web apps for MobileSafari will ensure these applications are available to largest possible market - &lt;em&gt;both&lt;/em&gt; iPhone and iPod Touch users.&lt;/p&gt;</description>
      <pubDate>Thu,  6 Sep 2007 01:02:00 PDT</pubDate>
      <guid>http://vault.openmonkey.com/articles/2007/09/06/iphone-applications-or-the-mobile-web</guid>
      <link>http://vault.openmonkey.com/articles/2007/09/06/iphone-applications-or-the-mobile-web</link>
      <category>Geek</category>
      <trackback:ping>http://vault.openmonkey.com/articles/trackback/92</trackback:ping>
    </item>
    <item>
      <title>Restoring a deleted directory or branch in subversion</title>
      <description>&lt;p&gt;To restore a deleted directory or branch in a subversion repository, use the &lt;code&gt;svn copy&lt;/code&gt; command.  Copy it from the last revision before it was removed:&lt;/p&gt;

&lt;p&gt;svn copy -r 1234 http://svnserver/path/to/branch http://svnserver/path/to/branch&lt;/p&gt;</description>
      <pubDate>Sun,  2 Sep 2007 17:48:00 PDT</pubDate>
      <guid>http://vault.openmonkey.com/articles/2007/09/02/restoring-a-deleted-directory-or-branch-in-subversion</guid>
      <link>http://vault.openmonkey.com/articles/2007/09/02/restoring-a-deleted-directory-or-branch-in-subversion</link>
      <category>Geek</category>
      <trackback:ping>http://vault.openmonkey.com/articles/trackback/91</trackback:ping>
    </item>
    <item>
      <title>Getting my new mac keyboard to work with a PC</title>
      <description>&lt;p&gt;Dear Internet,&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;ve been having some troubles getting my PC to boot while connected to one of the new Apple &lt;span class="caps"&gt;USB&lt;/span&gt; keyboards.&lt;/p&gt;


	&lt;p&gt;I have it connected with a &lt;span class="caps"&gt;USB&lt;/span&gt; extension cable in order for the keyboard to reach my desk.  However, in this state, the &lt;span class="caps"&gt;BIOS&lt;/span&gt; will print a &amp;#8220;No keyboard present&amp;#8221; error and fail to boot.&lt;/p&gt;


	&lt;p&gt;When I remove the extension cable and connect the keyboard directly, this error oes not appear and the system boots fine!  When I plug it back in through the extension cable after this point, everything is fine also.  The problem seems to occur only when the &lt;span class="caps"&gt;BIOS&lt;/span&gt; is loading.&lt;/p&gt;


	&lt;p&gt;Now ideally I need the extension cable because typing under my desk is just not comfortable.  Does anyone have any ideas about how to fix or work around this issue?  The &lt;span class="caps"&gt;USB&lt;/span&gt; keyboard support in my &lt;span class="caps"&gt;BIOS&lt;/span&gt; is turned on, for what it&amp;#8217;s worth.&lt;/p&gt;


	&lt;p&gt;You are my only hope!&lt;/p&gt;


	&lt;p&gt;Love,&lt;/p&gt;


	&lt;p&gt;Tim&lt;/p&gt;</description>
      <pubDate>Sun, 19 Aug 2007 16:37:00 PDT</pubDate>
      <guid>http://vault.openmonkey.com/articles/2007/08/19/getting-my-new-mac-keyboard-to-work-with-a-pc</guid>
      <link>http://vault.openmonkey.com/articles/2007/08/19/getting-my-new-mac-keyboard-to-work-with-a-pc</link>
      <category>Geek</category>
      <trackback:ping>http://vault.openmonkey.com/articles/trackback/90</trackback:ping>
    </item>
    <item>
      <title>Navigating between tabs in OS X</title>
      <description>&lt;p&gt;To use the keyboard to move to the next tab on the right, for selected apps on OS X:&lt;/p&gt;

&lt;table&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Safari&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;⌘ + shift + ]&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Firefox&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;⌘ + ⌥ + →&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Adium&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;⌘ + ]&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;VoodooPad&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;⌘ + ⌥ + shift + ]&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;In my time using OS X, I've found it generally to be quite a polished OS, and the application authors on the whole adhere to a consistent or obvious set of behaviours.  Keyboard navigation of tabs, however, is one thing that continues to trip me up.&lt;/p&gt;

&lt;p&gt;As far as I know, this is something where the Linux desktops are much further ahead, where "Control + Page Down" does the job in the majority of apps I use.&lt;/p&gt;</description>
      <pubDate>Tue, 14 Aug 2007 06:34:00 PDT</pubDate>
      <guid>http://vault.openmonkey.com/articles/2007/08/14/navigating-between-tabs-in-os-x</guid>
      <link>http://vault.openmonkey.com/articles/2007/08/14/navigating-between-tabs-in-os-x</link>
      <category>Geek</category>
      <trackback:ping>http://vault.openmonkey.com/articles/trackback/89</trackback:ping>
    </item>
  </channel>
</rss>
