<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Code Kills - Vim</title>
    <link>http://blog.codekills.net/</link>
    <description></description>
    <dc:language>en</dc:language>
    <admin:errorReportsTo rdf:resource="mailto:david@wolever.net" />
    <generator>Serendipity 1.1.3 - http://www.s9y.org/</generator>
    <pubDate>Sun, 06 Dec 2009 01:22:14 GMT</pubDate>

    <image>
        <url>http://blog.codekills.net/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Code Kills - Vim - </title>
        <link>http://blog.codekills.net/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>You and Your Editor: Vim normal mode commands g, : and d (3 of N)</title>
    <link>http://blog.codekills.net/archives/68-You-and-Your-Editor-Vim-normal-mode-commands-g,-and-d-3-of-N.html</link>
            <category>Vim</category>
    
    <comments>http://blog.codekills.net/archives/68-You-and-Your-Editor-Vim-normal-mode-commands-g,-and-d-3-of-N.html#comments</comments>
    <wfw:comment>http://blog.codekills.net/wfwcomment.php?cid=68</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://blog.codekills.net/rss.php?version=2.0&amp;type=comments&amp;cid=68</wfw:commentRss>
    

    <author>david@wolever.net (David Wolever)</author>
    <content:encoded>
    &lt;p&gt;In my last post, I &lt;a href=&quot;http://blog.codekills.net/archives/67-You-and-Your-Editor-Data-from-vim-logging-2-of-N.html&quot;&gt;showed off some normal-mode data from vim-logging&lt;/a&gt;. In this (and the next few) posts, I&#039;ll go though my most-used commands and describe how I use them.&lt;/p&gt;

&lt;p&gt;(Don&#039;t use Vim? This post won&#039;t be too interesting… Although you may pick up something useful)&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;g&quot;&gt;g&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;My logs contain more than 60,000 references to the &#039;g&#039; command (eight times more than &#039;:&#039;, the next most frequently used command).  This may seem surprising at first, but stick with me and let me explain: the &#039;g&#039; command is something of a &#039;gateway&#039; command - a prefix for a number of common actions which don&#039;t have their own single-character command (for example, &lt;tt&gt;gd&lt;/tt&gt;, goto definition and &lt;tt&gt;g?&lt;/tt&gt;, rot13 encode).&lt;/p&gt;

&lt;p&gt;Here is a breakdown of the &#039;g&#039; suffixes I often use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;gj&lt;/strong&gt; and &lt;strong&gt;gk&lt;/strong&gt;: cursor to next row, cursor to previous row (&quot;make &lt;code&gt;j&lt;/code&gt; and &lt;code&gt;k&lt;/code&gt; do the right thing&quot;). The &lt;code&gt;j&lt;/code&gt; and &lt;code&gt;k&lt;/code&gt; commands are defined as &quot;move to next line&quot; and &quot;move to previous line&quot;, not &quot;move to next screen row&quot; and &quot;move to previous screen row&quot;. This is an important distinction to make when long lines are wrapped, and I find &quot;move to next/previous screen row&quot; is a more reasonable default. &lt;em&gt;Protip&lt;/em&gt;: use &lt;code&gt;noremap j gj&lt;/code&gt; and &lt;code&gt;noremap k gk&lt;/code&gt; in your &lt;code&gt;vimrc&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;gg&lt;/strong&gt;: cursor to top of file. After using &lt;code&gt;gg&lt;/code&gt; (for example, to edit some import statements or add a shebang line), I often use &lt;code&gt;&#039;&#039;&lt;/code&gt; (tick-tick) to jump back to the line I was editing at the time (for example, &lt;code&gt;ggofrom foo import bar&amp;lt;esc&amp;gt;&#039;&#039;&lt;/code&gt;). Also, I often use &lt;code&gt;ggVG&lt;/code&gt; (go to top, enter line-visual-mode, go to bottom) to select the entire file. From there, I can pipe it to something (for example, &lt;code&gt;:!sort&lt;/code&gt;), format it (&lt;code&gt;gw&lt;/code&gt;) or copy it to the clipboard.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;gt&lt;/strong&gt; and &lt;strong&gt;gT&lt;/strong&gt;: go tab - move to next/previous tab.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;gf&lt;/strong&gt;: goto file - edit the file under the cursor. For example, if the cursor is over the &#039;e&#039; in &lt;code&gt;import &quot;../eventDispatercherImpl.as&quot;&lt;/code&gt;, the equivalent of &lt;code&gt;:e ../eventDispatercherImpl.as&lt;/code&gt; will be executed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;gw&lt;/strong&gt;: go wrap. Wrap the selected text (that is, text selected in visual mode). Try selecting a long line (pressing &lt;code&gt;V&lt;/code&gt;), then using &lt;code&gt;gw&lt;/code&gt; to wrap it.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That&#039;s all the &#039;g&#039; commands I can think of for now... The next version of vim-logging will log the sub-command used, so I will be able to provide better data in the future.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;colon&quot;&gt;:&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;The colon command is fairly obvious: enter command-line mode to run commands like &lt;code&gt;:w&lt;/code&gt; or &lt;code&gt;:help :&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I&#039;ll write more about this later, when I analyze my most-used ex commands.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;d&quot;&gt;d&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;Ah, &lt;code&gt;d&lt;/code&gt; - delete - the programmers best friend.&lt;/p&gt;

&lt;p&gt;As with &lt;code&gt;g&lt;/code&gt;, I do not have detailed information about how I use &lt;code&gt;d&lt;/code&gt;, but I&#039;ll list the first few combinations that come to mind when I move my left index finger over the &lt;code&gt;d&lt;/code&gt; key:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;dd&lt;/code&gt; to delete whole lines&lt;/li&gt;
&lt;li&gt;&lt;code&gt;di(&lt;/code&gt; to delete everything inside a pair of parenthesise&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dfx&lt;/code&gt; to delete everything between the current position and the next occurrence of &#039;x&#039;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dj&lt;/code&gt; and &lt;code&gt;dk&lt;/code&gt; to delete this and the next/previous line&lt;/li&gt;
&lt;li&gt;&lt;code&gt;d$&lt;/code&gt; to delete from the current position to the end of the line&lt;/li&gt;
&lt;li&gt;&lt;code&gt;d&lt;/code&gt; in visual mode to delete the selected text.&lt;/li&gt;
&lt;/ul&gt;
 
    </content:encoded>

    <pubDate>Sat, 05 Dec 2009 20:22:14 -0500</pubDate>
    <guid isPermaLink="false">http://blog.codekills.net/archives/68-guid.html</guid>
    
</item>
<item>
    <title>You and Your Editor: Data from vim-logging (2 of N)</title>
    <link>http://blog.codekills.net/archives/67-You-and-Your-Editor-Data-from-vim-logging-2-of-N.html</link>
            <category>Vim</category>
    
    <comments>http://blog.codekills.net/archives/67-You-and-Your-Editor-Data-from-vim-logging-2-of-N.html#comments</comments>
    <wfw:comment>http://blog.codekills.net/wfwcomment.php?cid=67</wfw:comment>

    <slash:comments>11</slash:comments>
    <wfw:commentRss>http://blog.codekills.net/rss.php?version=2.0&amp;type=comments&amp;cid=67</wfw:commentRss>
    

    <author>david@wolever.net (David Wolever)</author>
    <content:encoded>
    &lt;p&gt;Remember when I &lt;a href=&quot;http://blog.codekills.net/archives/64-vim-logging-taking-the-superstition-out-of-most-used-command.html&quot;&gt;blogged about &lt;tt&gt;vim-logging&lt;/tt&gt;&lt;/a&gt;? Well, I&#039;ve finally gotten around to interpreting the results.&lt;/p&gt;

&lt;p&gt;First, I will cover what I believe to be the most important thing to know about vim: the normal mode commands.&lt;/p&gt;

&lt;p&gt;Below is a chart of my 39 &lt;small&gt;(why 39? I can&#039;t remember - when I created the graph, that&#039;s the number I chose)&lt;/small&gt; most-frequently-used normal-mode commands:&lt;/p&gt;
 &lt;br /&gt;&lt;a href=&quot;http://blog.codekills.net/archives/67-You-and-Your-Editor-Data-from-vim-logging-2-of-N.html#extended&quot;&gt;Continue reading &quot;You and Your Editor: Data from vim-logging (2 of N)&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sat, 05 Dec 2009 19:19:48 -0500</pubDate>
    <guid isPermaLink="false">http://blog.codekills.net/archives/67-guid.html</guid>
    
</item>
<item>
    <title>You and Your Editor: The Bare Minimum You Should Be Doing (1 of N)</title>
    <link>http://blog.codekills.net/archives/63-You-and-Your-Editor-The-Bare-Minimum-You-Should-Be-Doing-1-of-N.html</link>
            <category>Vim</category>
    
    <comments>http://blog.codekills.net/archives/63-You-and-Your-Editor-The-Bare-Minimum-You-Should-Be-Doing-1-of-N.html#comments</comments>
    <wfw:comment>http://blog.codekills.net/wfwcomment.php?cid=63</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://blog.codekills.net/rss.php?version=2.0&amp;type=comments&amp;cid=63</wfw:commentRss>
    

    <author>david@wolever.net (David Wolever)</author>
    <content:encoded>
    &lt;p&gt;It&#039;s come up a few times, so I&#039;ll just go and post it here: the things, in no particular order, I believe to be the bare minimum you should be able to do while you&#039;re editing source code (and how to do them in Vim):&lt;/p&gt;

&lt;h3&gt;Easily move between files&lt;/h3&gt;

&lt;p&gt;All but the simplest scripts require more than one file, so you&#039;ll often need to switch between them.&lt;/p&gt;

&lt;p&gt;Eclipse has two very useful features here: Quick Access (command+3) and Open Resource (command+shift+r):&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://img.skitch.com/20091015-1i77c8765brbn3uguti323bssd.png&quot; alt=&quot;quick access&quot; /&gt;&lt;img src=&quot;http://img.skitch.com/20091015-nwf1xjsxp9xc8xr9k4e67s66ua.png&quot; alt=&quot;open resource&quot; /&gt;&lt;/p&gt;

&lt;p&gt;And in Vim, I make heavy use of multiple windows (&lt;code&gt;:new&lt;/code&gt; and &lt;code&gt;:vnew&lt;/code&gt;, using custom shortcuts, &lt;code&gt;c-h&lt;/code&gt;, &lt;code&gt;c-j&lt;/code&gt;, &lt;code&gt;c-k&lt;/code&gt; and &lt;code&gt;c-l&lt;/code&gt; to move between them) and multiple buffers, using &lt;code&gt;:b&lt;/code&gt;. For example, below, I have typed &lt;code&gt;:b url&amp;lt;tab&amp;gt;&lt;/code&gt;, then I use &lt;code&gt;c-p&lt;/code&gt; and &lt;code&gt;c-n&lt;/code&gt; to cycle through the list of matching buffers (I also have &lt;code&gt;&amp;lt;right&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;left&amp;gt;&lt;/code&gt; bound to &lt;code&gt;:bn&lt;/code&gt; and &lt;code&gt;:bp&lt;/code&gt;, making it easy to flip through buffers if I&#039;m not sure what I want).&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://img.skitch.com/20091015-tt3ybdairm6j3k71rkrqwafimp.png&quot; alt=&quot;windows and buffers in Vim&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Jump-to-definition&lt;/h3&gt;

&lt;p&gt;When you&#039;re working with a large project, especially one for which you aren&#039;t the only author, it can become nontrivial to figure out where things (classes, functions, etc) are defined. I&#039;ve found that it&#039;s very hard to read source code without a jump-to-definition function because it forces a mental context switch from &quot;figuring out what this code does&quot; to &quot;figuring out where this method is defined&quot;, then once I&#039;ve found where it&#039;s defined, &quot;ok, now what was I looking for again?&quot;, and once I&#039;ve finished reading the definition &quot;why am I looking here again?&quot; and finally to &quot;what was the point of this sentence?&quot;&lt;/p&gt;

&lt;p&gt;With Vim, I use &lt;a href=&quot;http://ctags.sourceforge.net/&quot;&gt;exuberant ctags&lt;/a&gt; to do this.&lt;/p&gt;

&lt;p&gt;First, I run &lt;code&gt;ctags -R .&lt;/code&gt; to build a &lt;code&gt;tags&lt;/code&gt; file, then I access it using &lt;code&gt;:tag&lt;/code&gt;, &lt;code&gt;c-]&lt;/code&gt; and &lt;code&gt;c-w ]&lt;/code&gt; from within Vim. Also useful is &lt;code&gt;c-t&lt;/code&gt;: after &lt;code&gt;c-]&lt;/code&gt; is used to examine a definition, &lt;code&gt;c-t&lt;/code&gt; will take you back to the place you had originally found that definition. Very, very useful.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://img.skitch.com/20091015-kfqyjynau4mg8shsb3n3sbxbbe.png&quot; alt=&quot;tags in Vim&quot; /&gt;&lt;/p&gt;

&lt;p&gt;(note, for this to work properly, make sure &lt;code&gt;:set tags=tags;/&lt;/code&gt; is set in Vim)&lt;/p&gt;

&lt;h3&gt;Search for/highlight the current word&lt;/h3&gt;

&lt;p&gt;Often, when I&#039;m reading code, I&#039;ll want to quickly look through all the references to some word in the current file (for example, to see where a variable is referenced or how a function is called). This sounds trivial, but I find myself doing it often. Very often. So give it a try before immediately disregarding it.&lt;/p&gt;

&lt;p&gt;I do this in Vim using &lt;code&gt;*&lt;/code&gt; and &lt;code&gt;#&lt;/code&gt; and &lt;code&gt;:set hlsearch&lt;/code&gt; (as a side note, I&#039;ve also got &lt;code&gt;\\&lt;/code&gt; bound to &lt;code&gt;:set nohlsearch&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;For example, if my cursor is over &lt;code&gt;load_BufferedImage&lt;/code&gt;, then I hit &lt;code&gt;*&lt;/code&gt;, I can quickly jump through all the tests which call it.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://img.skitch.com/20091015-p7fa8ph5y74jgyd8trip71rsag.png&quot; alt=&quot;Using &#039;*&#039; to search&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;That&#039;s all… For now&lt;/h3&gt;

&lt;p&gt;That&#039;s all for now, but stay tuned – I do love editing text, so I&#039;ll probably come back and write some more on this later.&lt;/p&gt;

&lt;p&gt;PS: Just to make very sure it&#039;s clear, the only editors I mean to bash here are the ones which make it very hard to do the things I&#039;ve talked about (nano, notepad, etc)… Every decent editor can do these things, you&#039;ve just got to learn how.&lt;/p&gt;

&lt;p&gt;PPS: If you don&#039;t already use it, Vim has a great built-in help system. Access it with &lt;tt&gt;:help &lt;i&gt;{subject}&lt;/i&gt;&lt;/tt&gt;. For example, &lt;code&gt;:help vnew&lt;/code&gt; or &lt;code&gt;:help &amp;lt;c-w&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;PPPS: &lt;a href=&quot;http://imaddicted.ca/&quot;&gt;Todd&lt;/a&gt; has posted a followup, &lt;a href=&quot;http://imaddicted.ca/dev/worthwhile-vim-tips/&quot;&gt;Worthwhile vim tips&lt;/a&gt; – they are a bit more basic, but even more important than the things I&#039;ve talked about here.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Thu, 15 Oct 2009 00:26:09 -0400</pubDate>
    <guid isPermaLink="false">http://blog.codekills.net/archives/63-guid.html</guid>
    
</item>
<item>
    <title>DrProject/Trac Wiki Syntax Highlighting for Vim</title>
    <link>http://blog.codekills.net/archives/22-DrProjectTrac-Wiki-Syntax-Highlighting-for-Vim.html</link>
            <category>DrProject</category>
            <category>Vim</category>
    
    <comments>http://blog.codekills.net/archives/22-DrProjectTrac-Wiki-Syntax-Highlighting-for-Vim.html#comments</comments>
    <wfw:comment>http://blog.codekills.net/wfwcomment.php?cid=22</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.codekills.net/rss.php?version=2.0&amp;type=comments&amp;cid=22</wfw:commentRss>
    

    <author>david@wolever.net (David Wolever)</author>
    <content:encoded>
    &lt;p&gt;After being frustrated with boring &lt;a href=&quot;http://www.cs.cmu.edu/~maverick/VimColorSchemeTest/spectro-html.html&quot;&gt;white-on-almost-black&lt;/a&gt; (&lt;a href=&quot;http://www.cs.cmu.edu/~maverick/VimColorSchemeTest/spectro.vim&quot;&gt;spectro&lt;/a&gt;) while working with &lt;a href=&quot;http://drproject.org&quot;&gt;DrProject&lt;/a&gt; wiki files, I broke down and wrote a Vim plugin to make the syntax pretty.  It will also parse most of the &lt;a href=&quot;http://trac.edgewall.org&quot;&gt;Trac&lt;/a&gt; syntax (and more should be easy to add).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Get it:&lt;/strong&gt; &lt;a href=&quot;http://wolever.net/~wolever/drpwiki.vim&quot;&gt;http://wolever.net/~wolever/drpwiki.vim&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Using it:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Save it to ~/.vim/syntax/drpwiki.vim (create the directory if it doesn&#039;t exist)
&lt;li&gt;In Vim, enter `:set filetype=drpwiki`
&lt;/ol&gt;
 
    </content:encoded>

    <pubDate>Thu, 16 Aug 2007 10:39:27 -0400</pubDate>
    <guid isPermaLink="false">http://blog.codekills.net/archives/22-guid.html</guid>
    
</item>
<item>
    <title>Fixing Files with Vim Macros</title>
    <link>http://blog.codekills.net/archives/12-Fixing-Files-with-Vim-Macros.html</link>
            <category>Vim</category>
    
    <comments>http://blog.codekills.net/archives/12-Fixing-Files-with-Vim-Macros.html#comments</comments>
    <wfw:comment>http://blog.codekills.net/wfwcomment.php?cid=12</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://blog.codekills.net/rss.php?version=2.0&amp;type=comments&amp;cid=12</wfw:commentRss>
    

    <author>david@wolever.net (David Wolever)</author>
    <content:encoded>
    &lt;p&gt;I got an email a couple days ago asking me to add a small header to all the pages of a website I work on from time to time.  The site was built with static HTML a couple of years ago and this was the first site-wide modification I&#039;ve had to make since then.  So I fired up Vim, loaded the session I use to work on the page and got to work.  It didn&#039;t take too long to make the changes to one page -- add a couple of JavaScript functions, add a call to the the body&#039;s &lt;code&gt;onLoad&lt;/code&gt; property and finally a little div just below that.&lt;/p&gt;

&lt;p&gt;But then came the problem.  How do I apply this change to all the pages?  Normally, to do multi-file search-and-replace, I use &lt;code&gt;perl -pi -e &#039;s/search/replace/g&#039; `find . -name &#039;*.html&#039;`&lt;/code&gt;... But, in this case, I would have to run that three times (one for each block of text)... And more importantly I want to see the file before I edit it (because some of the HTML files don&#039;t use the standard template, so they would get horribly mangled).&lt;sup&gt;1&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;So how did I do it?  By writing a Vim script!  I used &lt;code&gt;gvim *.html&lt;/code&gt; to open up all the HTML files, them &lt;code&gt;qa&lt;/code&gt; to record all my keystrokes in to register &lt;code&gt;a&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;As I made the changes, I used general steps so that they could be repeated on each file.  For instance, I used &lt;code&gt;/onLoad&lt;/code&gt; to search for the &lt;code&gt;onLoad&lt;/code&gt; property of the body, then &lt;code&gt;f=la&lt;/code&gt; to find the &lt;code&gt;=&lt;/code&gt;, move one character to the right then insert my text.  When that was done, I opened up the line right below the body tag with &lt;code&gt;o&lt;/code&gt; and put in the &lt;code&gt;div&lt;/code&gt; tag that I needed.&lt;/p&gt;

&lt;p&gt;Finally, after saving the file, I used &lt;code&gt;:bn&lt;/code&gt; to move to the next buffer and hit &lt;code&gt;q&lt;/code&gt; to stop the recording.  I could now look at the new file to see if it needed to be changed, then change it with &lt;code&gt;@a&lt;/code&gt; or move on to the next buffer with &lt;code&gt;:bn&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Now, this makes me curious... Faced with a similar situation, how would you solve a problem like this?&lt;/p&gt;

&lt;p&gt;&lt;small&gt;1: Now, in retrospect, I realize I could have used:
&lt;code&gt;&lt;/p&gt;

&lt;pre&gt;
for FILE in `find . -name &#039;*.html&#039;`; do
  read -p &quot;Edit $FILE? &quot; R
  if [[ $R == &quot;y&quot; ]]; then
     perl -pi -e &#039;s/old/new&#039; $FILE
  fi
done
&lt;/pre&gt;

&lt;p&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;But that would assume that I was putting some serious level of thought in to this.  Also, unless I also had the presence of mind to add &lt;code&gt;cp $FILE{,.backup}&lt;/code&gt; I would not have any way to un-do my changes.&lt;/small&gt;&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Fri, 15 Jun 2007 22:51:21 -0400</pubDate>
    <guid isPermaLink="false">http://blog.codekills.net/archives/12-guid.html</guid>
    
</item>

</channel>
</rss>