<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Paint the Tiger, Carve the Swan</title>
	<atom:link href="http://schinckel.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://schinckel.net</link>
	<description>Like a fortune cookie, only without the fortune, and not a cookie.</description>
	<pubDate>Sun, 24 May 2009 02:59:09 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.5</generator>
	<language>en</language>
			<item>
		<title>Logos</title>
		<link>http://schinckel.net/2009/05/24/logos/</link>
		<comments>http://schinckel.net/2009/05/24/logos/#comments</comments>
		<pubDate>Sun, 24 May 2009 02:53:04 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[Stea]]></category>

		<guid isPermaLink="false">http://schinckel.net/2009/05/24/logos/</guid>
		<description><![CDATA[Started up a new iPhone app today. The logo at the bottom of the screen looked a bit familiar:

Here is the logo from the Adelaide City Council (which has been in use for about 7 years):

Wonder which came first&#8230;
If I overlay one one the other, we see they are not identical:

]]></description>
			<content:encoded><![CDATA[<p>Started up a new iPhone app today. The logo at the bottom of the screen looked a bit familiar:</p>
<p><img src="http://www.quicksnapper.com/files/4901/8847654464A18B5999E0B9_m.png" /></p>
<p>Here is the logo from the Adelaide City Council (which has been in use for about 7 years):</p>
<p><img src="http://www.quicksnapper.com/files/4901/18936119564A18B596AA4A3_m.png" /></p>
<p>Wonder which came first&#8230;</p>
<p>If I overlay one one the other, we see they are not identical:</p>
<p><a href="http://www.quicksnapper.com/schinckel/image/merged-logos"><img src="http://www.quicksnapper.com/files/4901/11752156844A18B7E19014E_m.png" title="Hosted by QuickSnapper.com" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://schinckel.net/2009/05/24/logos/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Fix Redmine not showing repository data</title>
		<link>http://schinckel.net/2009/05/14/fix-redmine-not-showing-repository-data/</link>
		<comments>http://schinckel.net/2009/05/14/fix-redmine-not-showing-repository-data/#comments</comments>
		<pubDate>Thu, 14 May 2009 03:36:59 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[django]]></category>

		<guid isPermaLink="false">http://schinckel.net/2009/05/14/fix-redmine-not-showing-repository-data/</guid>
		<description><![CDATA[For some time, the git repository I am using to track changes for my Django-Management TextMate bundle was not working correctly in Redmine. I was able to connect it up using the settings, but was getting errors about the files not being found.
It turns out that git was not in my path. Putting a link [...]]]></description>
			<content:encoded><![CDATA[<p>For some time, the git repository I am using to track changes for my Django-Management TextMate bundle was not working correctly in Redmine. I was able to connect it up using the settings, but was getting errors about the files not being found.</p>
<p>It turns out that git was not in my path. Putting a link from /usr/local/bin/git to /usr/bin/git fixed that all up.</p>
]]></content:encoded>
			<wfw:commentRss>http://schinckel.net/2009/05/14/fix-redmine-not-showing-repository-data/feed/</wfw:commentRss>
		</item>
		<item>
		<title>TextMate return codes</title>
		<link>http://schinckel.net/2009/05/05/textmate-return-codes/</link>
		<comments>http://schinckel.net/2009/05/05/textmate-return-codes/#comments</comments>
		<pubDate>Tue, 05 May 2009 08:34:26 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[Ruby]]></category>

		<category><![CDATA[TextMate]]></category>

		<guid isPermaLink="false">http://schinckel.net/2009/05/05/textmate-return-codes/</guid>
		<description><![CDATA[From the TextMate manual:

These functions only work when the initial output option is not set as &#8220;Show as HTML&#8221;. The list of functions is as follows:

exit_discard
exit_replace_text
exit_replace_document
exit_insert_text
exit_insert_snippet
exit_show_html
exit_show_tool_tip
exit_create_new_document&#160;&#160;


This is all well and good, but what about when you are in another language?
Simple. Just ensure your exit code matches. The values start at 200, for exit_discard, and 205 [...]]]></description>
			<content:encoded><![CDATA[<p>From the TextMate manual:</p>
<blockquote>
<p>These functions only work when the initial output option is not set as &#8220;Show as HTML&#8221;. The list of functions is as follows:</p>
<ul>
<li>exit_discard</li>
<li>exit_replace_text</li>
<li>exit_replace_document</li>
<li>exit_insert_text</li>
<li>exit_insert_snippet</li>
<li>exit_show_html</li>
<li>exit_show_tool_tip</li>
<li>exit_create_new_document&nbsp;&nbsp;</li>
</ul>
</blockquote>
<p>This is all well and good, but what about when you are in another language?</p>
<p>Simple. Just ensure your exit code matches. The values start at 200, for exit_discard, and 205 is exit_show_html.</p>
<p>This is probably not the best way to do it, as these may change in the future. But, I couldn&#8217;t think of another way, at least not offline.</p>
]]></content:encoded>
			<wfw:commentRss>http://schinckel.net/2009/05/05/textmate-return-codes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Reasons PHP sucks #753</title>
		<link>http://schinckel.net/2009/04/28/reasons-php-sucks-753/</link>
		<comments>http://schinckel.net/2009/04/28/reasons-php-sucks-753/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 10:00:57 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://schinckel.net/2009/04/28/reasons-php-sucks-753/</guid>
		<description><![CDATA[
Another good example of a PHP “quirk” is the way PHP handles constants. It was one of the major factors affecting performance. Just removing all the constants allowed us to improve the performance by almost 2x (we left one constant to be precise).

From The Need for Speed.
That&#8217;s right - PHP is up to 2X faster [...]]]></description>
			<content:encoded><![CDATA[<blockquote>
<p>Another good example of a PHP “quirk” is the way PHP handles constants. It was one of the major factors affecting performance. Just removing all the constants allowed us to improve the performance by almost 2x (we left one constant to be precise).</p>
</blockquote>
<p>From <a href="http://blog.openx.org/06/the-need-for-speed/">The Need for Speed</a>.</p>
<p>That&#8217;s right - PHP is up to 2X faster if you don&#8217;t use constants. You know, that means hardcode values in&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://schinckel.net/2009/04/28/reasons-php-sucks-753/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Patch for Mercurial.tmbundle</title>
		<link>http://schinckel.net/2009/04/27/patch-for-mercurialtmbundle/</link>
		<comments>http://schinckel.net/2009/04/27/patch-for-mercurialtmbundle/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 02:10:24 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[Mercurial]]></category>

		<category><![CDATA[TextMate]]></category>

		<guid isPermaLink="false">http://schinckel.net/2009/04/27/patch-for-mercurialtmbundle/</guid>
		<description><![CDATA[
diff -r 5e13047a2284 Support/hg_commit.rb
--- a/Support/hg_commit.rb	Mon Apr 27 11:38:15 2009 +0930
+++ b/Support/hg_commit.rb	Mon Apr 27 11:39:00 2009 +0930
@@ -79,7 +79,7 @@
   commit_paths_array = matches_to_paths(commit_matches)
   commit_status = matches_to_status(commit_matches).join(&#34;:&#34;)
   commit_path_text = commit_paths_array.collect{&#124;path&#124; path.quote_filename_for_shell }.join(&#34; &#34;)
-  commit_args = %x{&#34;#{commit_tool}&#34; --status #{commit_status} #{commit_path_text} }
+  commit_args = %x{&#34;#{commit_tool}&#34; --diff-cmd hg,diff --status #{commit_status} #{commit_path_text} }

 [...]]]></description>
			<content:encoded><![CDATA[<div class="highlight">
<pre><span class="gh">diff -r 5e13047a2284 Support/hg_commit.rb</span>
<span class="gd">--- a/Support/hg_commit.rb	Mon Apr 27 11:38:15 2009 +0930</span>
<span class="gi">+++ b/Support/hg_commit.rb	Mon Apr 27 11:39:00 2009 +0930</span>
<span class="gu">@@ -79,7 +79,7 @@</span>
   commit_paths_array = matches_to_paths(commit_matches)
   commit_status = matches_to_status(commit_matches).join(&quot;:&quot;)
   commit_path_text = commit_paths_array.collect{|path| path.quote_filename_for_shell }.join(&quot; &quot;)
<span class="gd">-  commit_args = %x{&quot;#{commit_tool}&quot; --status #{commit_status} #{commit_path_text} }</span>
<span class="gi">+  commit_args = %x{&quot;#{commit_tool}&quot; --diff-cmd hg,diff --status #{commit_status} #{commit_path_text} }</span>

   status = $CHILD_STATUS
   if status != 0
</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://schinckel.net/2009/04/27/patch-for-mercurialtmbundle/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SWI-Prolog Bundle</title>
		<link>http://schinckel.net/2009/04/26/swi-prolog-bundle/</link>
		<comments>http://schinckel.net/2009/04/26/swi-prolog-bundle/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 11:32:04 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[Prolog]]></category>

		<category><![CDATA[TextMate]]></category>

		<guid isPermaLink="false">http://schinckel.net/2009/04/26/swi-prolog-bundle/</guid>
		<description><![CDATA[I&#8217;ve cloned and updated the included Prolog bundle to use my Run script.
This can be found at GitHub: SWI-Prolog.tmbundle.
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve cloned and updated the included Prolog bundle to use my Run script.</p>
<p>This can be found at GitHub: <a href="http://github.com/schinckel/SWI-Prolog.tmbundle/tree/master">SWI-Prolog.tmbundle</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://schinckel.net/2009/04/26/swi-prolog-bundle/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Run Prolog Program</title>
		<link>http://schinckel.net/2009/04/26/run-prolog-program/</link>
		<comments>http://schinckel.net/2009/04/26/run-prolog-program/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 11:05:34 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[Prolog]]></category>

		<category><![CDATA[TextMate]]></category>

		<guid isPermaLink="false">http://schinckel.net/2009/04/26/run-prolog-program/</guid>
		<description><![CDATA[In the continuing effort to do &#8216;productive&#8217; tasks, but not actually the project I am supposed to be working on, I present a TextMate command to run the current prolog file, with nice HTML output, and input via a dialog box.

#! /usr/bin/env ruby

require ENV[&#34;TM_SUPPORT_PATH&#34;] + &#34;/lib/tm/executor&#34;

command = [ENV[&#34;TM_PROLOG&#34;] &#124;&#124; &#34;swipl&#34;, &#34;-s&#34;, ENV[&#34;TM_FILEPATH&#34;]]
two_line = false

welcome = [...]]]></description>
			<content:encoded><![CDATA[<p>In the continuing effort to do &#8216;productive&#8217; tasks, but not actually the project I am supposed to be working on, I present a TextMate command to run the current prolog file, with nice HTML output, and input via a dialog box.</p>
<div class="highlight">
<pre><span class="c1">#! /usr/bin/env ruby</span>

<span class="nb">require</span> <span class="no">ENV</span><span class="o">[</span><span class="s2">&quot;TM_SUPPORT_PATH&quot;</span><span class="o">]</span> <span class="o">+</span> <span class="s2">&quot;/lib/tm/executor&quot;</span>

<span class="n">command</span> <span class="o">=</span> <span class="o">[</span><span class="no">ENV</span><span class="o">[</span><span class="s2">&quot;TM_PROLOG&quot;</span><span class="o">]</span> <span class="o">||</span> <span class="s2">&quot;swipl&quot;</span><span class="p">,</span> <span class="s2">&quot;-s&quot;</span><span class="p">,</span> <span class="no">ENV</span><span class="o">[</span><span class="s2">&quot;TM_FILEPATH&quot;</span><span class="o">]]</span>
<span class="n">two_line</span> <span class="o">=</span> <span class="kp">false</span>

<span class="n">welcome</span> <span class="o">=</span> <span class="sr">/^(Welcome to SWI-Prolog)|(Copyright )|(SWI-Prolog comes with)|(and you are welcome)|(Please visit)|(For help, use)/</span>

<span class="no">TextMate</span><span class="o">::</span><span class="no">Executor</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">command</span><span class="p">)</span> <span class="k">do</span> <span class="o">|</span><span class="n">str</span><span class="p">,</span> <span class="nb">type</span><span class="o">|</span>
  <span class="k">if</span> <span class="nb">type</span> <span class="o">==</span> <span class="ss">:err</span>
    <span class="k">if</span> <span class="n">two_line</span>
      <span class="n">two_line</span> <span class="o">=</span> <span class="kp">false</span>
      <span class="c1"># this line is part of the previous message</span>
      <span class="s2">&quot;</span><span class="si">#{</span><span class="n">str</span><span class="si">}</span><span class="s2">&lt;/div&gt;&quot;</span>
    <span class="c1"># Is this a warning line?</span>
    <span class="k">elsif</span> <span class="n">str</span> <span class="o">=~</span> <span class="sr">/(Warning):\s(.*):(\d+):/</span>
      <span class="nb">warn</span><span class="p">,</span> <span class="n">file</span><span class="p">,</span> <span class="n">line</span> <span class="o">=</span> <span class="vg">$1</span><span class="p">,</span> <span class="vg">$2</span><span class="p">,</span> <span class="vg">$3</span>
      <span class="n">filename</span> <span class="o">=</span> <span class="n">file</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">)</span><span class="o">[-</span><span class="mi">1</span><span class="o">]</span>
      <span class="n">two_line</span> <span class="o">=</span> <span class="kp">true</span>
      <span class="n">file_link</span> <span class="o">=</span> <span class="s2">&quot;&lt;a class=</span><span class="se">\&quot;</span><span class="s2">near</span><span class="se">\&quot;</span><span class="s2"> href=</span><span class="se">\&quot;</span><span class="s2">txmt://open?line=</span><span class="si">#{</span><span class="n">line</span><span class="si">}</span><span class="s2">&amp;url=file://</span><span class="si">#{</span><span class="n">file</span><span class="si">}</span><span class="se">\&quot;</span><span class="s2">&gt;</span><span class="si">#{</span><span class="n">filename</span><span class="si">}</span><span class="s2">&lt;/a&gt;&quot;</span>
      <span class="s2">&quot;&lt;div class=</span><span class="se">\&quot;</span><span class="si">#{</span><span class="nb">warn</span><span class="si">}</span><span class="se">\&quot;</span><span class="s2">&gt;</span><span class="si">#{</span><span class="nb">warn</span><span class="si">}</span><span class="s2">: </span><span class="si">#{</span><span class="n">file_link</span><span class="si">}</span><span class="s2">, line </span><span class="si">#{</span><span class="n">line</span><span class="si">}</span><span class="s2">:&quot;</span>
    <span class="k">elsif</span> <span class="n">str</span> <span class="o">=~</span> <span class="sr">/(ERROR):\s(.*):(\d+):(\d+):\s(.*)/</span>
      <span class="n">file</span><span class="p">,</span> <span class="n">line</span><span class="p">,</span> <span class="n">char</span><span class="p">,</span> <span class="n">message</span> <span class="o">=</span> <span class="vg">$2</span><span class="p">,</span> <span class="vg">$3</span><span class="p">,</span> <span class="vg">$4</span><span class="p">,</span> <span class="vg">$5</span>
      <span class="n">filename</span> <span class="o">=</span> <span class="n">file</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">)</span><span class="o">[-</span><span class="mi">1</span><span class="o">]</span>
      <span class="n">file_link</span> <span class="o">=</span> <span class="s2">&quot;&lt;a class=</span><span class="se">\&quot;</span><span class="s2">near</span><span class="se">\&quot;</span><span class="s2"> href=</span><span class="se">\&quot;</span><span class="s2">txmt://open?line=</span><span class="si">#{</span><span class="n">line</span><span class="si">}</span><span class="s2">&amp;column=</span><span class="si">#{</span><span class="n">char</span><span class="si">}</span><span class="s2">&amp;url=file://</span><span class="si">#{</span><span class="n">file</span><span class="si">}</span><span class="se">\&quot;</span><span class="s2">&gt;</span><span class="si">#{</span><span class="n">filename</span><span class="si">}</span><span class="s2">&lt;/a&gt;&quot;</span>
      <span class="s2">&quot;&lt;div class=</span><span class="se">\&quot;</span><span class="s2">err</span><span class="se">\&quot;</span><span class="s2">&gt;ERROR: </span><span class="si">#{</span><span class="n">file_link</span><span class="si">}</span><span class="s2">, line </span><span class="si">#{</span><span class="n">line</span><span class="si">}</span><span class="s2">, col </span><span class="si">#{</span><span class="n">char</span><span class="si">}</span><span class="s2">: </span><span class="si">#{</span><span class="n">message</span><span class="si">}</span><span class="s2">&lt;/div&gt;&quot;</span>
    <span class="k">elsif</span> <span class="n">str</span> <span class="o">=~</span> <span class="sr">/ERROR:\s(.*)/</span>
      <span class="n">message</span> <span class="o">=</span> <span class="vg">$1</span>
      <span class="s2">&quot;&lt;div class=</span><span class="se">\&quot;</span><span class="s2">test fail</span><span class="se">\&quot;</span><span class="s2">&gt;ERROR: </span><span class="si">#{</span><span class="n">message</span><span class="si">}</span><span class="s2">&lt;/div&gt;&quot;</span>
    <span class="k">elsif</span> <span class="n">str</span> <span class="o">=~</span> <span class="sr">/%\s(.*)\scompiled\s(.*)\ssec,\s(.*)\sbytes/</span>
      <span class="n">file</span><span class="p">,</span> <span class="n">time</span><span class="p">,</span> <span class="n">length</span> <span class="o">=</span> <span class="vg">$1</span><span class="p">,</span> <span class="vg">$2</span><span class="p">,</span> <span class="vg">$3</span>
      <span class="n">filename</span> <span class="o">=</span> <span class="n">file</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">)</span><span class="o">[-</span><span class="mi">1</span><span class="o">]</span>
      <span class="n">file_link</span> <span class="o">=</span> <span class="s2">&quot;&lt;a class=</span><span class="se">\&quot;</span><span class="s2">near</span><span class="se">\&quot;</span><span class="s2"> href=</span><span class="se">\&quot;</span><span class="s2">txmt://open?url=file://</span><span class="si">#{</span><span class="n">file</span><span class="si">}</span><span class="se">\&quot;</span><span class="s2">&gt;</span><span class="si">#{</span><span class="n">filename</span><span class="si">}</span><span class="s2">&lt;/a&gt;&quot;</span>
      <span class="s2">&quot;&lt;div class=</span><span class="se">\&quot;</span><span class="s2">test ok</span><span class="se">\&quot;</span><span class="s2">&gt; </span><span class="si">#{</span><span class="n">file_link</span><span class="si">}</span><span class="s2"> (</span><span class="si">#{</span><span class="n">length</span><span class="si">}</span><span class="s2"> bytes) compiled in </span><span class="si">#{</span><span class="n">time</span><span class="si">}</span><span class="s2"> sec.&lt;/div&gt;&quot;</span>
    <span class="k">elsif</span> <span class="n">str</span> <span class="o">=~</span> <span class="n">welcome</span>
      <span class="s2">&quot;&lt;span class=</span><span class="se">\&quot;</span><span class="s2">copyright</span><span class="se">\&quot;</span><span class="s2"> style=</span><span class="se">\&quot;</span><span class="s2">font-size:xx-small;</span><span class="se">\&quot;</span><span class="s2">&gt;</span><span class="si">#{</span><span class="n">str</span><span class="si">}</span><span class="s2">&lt;/span&gt; &quot;</span>
    <span class="k">else</span>
      <span class="s2">&quot;&lt;div class=</span><span class="se">\&quot;</span><span class="s2">output</span><span class="se">\&quot;</span><span class="s2">&gt;</span><span class="si">#{</span><span class="n">str</span><span class="si">}</span><span class="s2">&lt;/div&gt;&quot;</span>
    <span class="k">end</span>
  <span class="k">else</span>
    <span class="s2">&quot;&lt;div class=</span><span class="se">\&quot;</span><span class="s2">output</span><span class="se">\&quot;</span><span class="s2">&gt;</span><span class="si">#{</span><span class="n">str</span><span class="si">}</span><span class="s2">&lt;/div&gt;&quot;</span>
  <span class="k">end</span>
<span class="k">end</span>
</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://schinckel.net/2009/04/26/run-prolog-program/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Run Django Tests from TextMate</title>
		<link>http://schinckel.net/2009/04/24/run-django-tests-from-textmate/</link>
		<comments>http://schinckel.net/2009/04/24/run-django-tests-from-textmate/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 08:28:40 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[django]]></category>

		<category><![CDATA[Testing]]></category>

		<category><![CDATA[TextMate]]></category>

		<guid isPermaLink="false">http://schinckel.net/2009/04/24/run-django-tests-from-textmate/</guid>
		<description><![CDATA[It would be cool to be able to run my Django tests from within TextMate.
Update: this version will run just the tests from the active file, if there are any.  Otherwise, it runs all of the tests in the whole project.
Here is a Command to do just that:

#! /usr/bin/env ruby

command = [ENV[&#34;TM_PYTHON&#34;] &#124;&#124; &#34;python&#34;, [...]]]></description>
			<content:encoded><![CDATA[<p>It would be cool to be able to run my Django tests from within TextMate.</p>
<p>Update: this version will run just the tests from the active file, if there are any.  Otherwise, it runs all of the tests in the whole project.</p>
<p>Here is a Command to do just that:</p>
<div class="highlight">
<pre><span class="c1">#! /usr/bin/env ruby</span>

<span class="n">command</span> <span class="o">=</span> <span class="o">[</span><span class="no">ENV</span><span class="o">[</span><span class="s2">&quot;TM_PYTHON&quot;</span><span class="o">]</span> <span class="o">||</span> <span class="s2">&quot;python&quot;</span><span class="p">,</span> <span class="s2">&quot;-u&quot;</span><span class="p">,</span> <span class="s2">&quot;</span><span class="si">#{</span><span class="no">ENV</span><span class="o">[</span><span class="s1">&#39;TM_PROJECT_DIRECTORY&#39;</span><span class="o">]</span><span class="si">}</span><span class="s2">/manage.py&quot;</span><span class="p">,</span> <span class="s2">&quot;test&quot;</span><span class="p">,</span> <span class="s2">&quot;--noinput&quot;</span><span class="o">]</span>

<span class="no">File</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="no">ENV</span><span class="o">[</span><span class="s1">&#39;TM_FILEPATH&#39;</span><span class="o">]</span><span class="p">)</span> <span class="k">do</span> <span class="o">|</span><span class="n">f</span><span class="o">|</span>
  <span class="n">f</span><span class="o">.</span><span class="n">readlines</span><span class="o">.</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">line</span><span class="o">|</span>
    <span class="k">if</span> <span class="n">line</span> <span class="o">=~</span> <span class="sr">/class (.*)\(.*TestCase\):/</span>
      <span class="n">test_case</span> <span class="o">=</span> <span class="vg">$1</span>
      <span class="n">app_name</span> <span class="o">=</span> <span class="no">ENV</span><span class="o">[</span><span class="s1">&#39;TM_FILEPATH&#39;</span><span class="o">].</span><span class="n">split</span><span class="p">(</span><span class="no">ENV</span><span class="o">[</span><span class="s1">&#39;TM_PROJECT_DIRECTORY&#39;</span><span class="o">]</span><span class="p">)</span><span class="o">[</span><span class="mi">1</span><span class="o">].</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">)</span><span class="o">[</span><span class="mi">1</span><span class="o">]</span>
      <span class="n">test_name</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">#{</span><span class="n">app_name</span><span class="si">}</span><span class="s2">.</span><span class="si">#{</span><span class="n">test_case</span><span class="si">}</span><span class="s2">&quot;</span>
      <span class="n">command</span> <span class="o">&lt;&lt;</span> <span class="n">test_name</span>
    <span class="k">end</span>
  <span class="k">end</span>
<span class="k">end</span>

<span class="nb">require</span> <span class="no">ENV</span><span class="o">[</span><span class="s2">&quot;TM_SUPPORT_PATH&quot;</span><span class="o">]</span> <span class="o">+</span> <span class="s2">&quot;/lib/tm/executor&quot;</span>

<span class="no">ENV</span><span class="o">[</span><span class="s2">&quot;PYTHONPATH&quot;</span><span class="o">]</span> <span class="o">=</span> <span class="no">ENV</span><span class="o">[</span><span class="s2">&quot;TM_BUNDLE_SUPPORT&quot;</span><span class="o">]</span> <span class="o">+</span> <span class="p">(</span><span class="no">ENV</span><span class="o">.</span><span class="n">has_key?</span><span class="p">(</span><span class="s2">&quot;PYTHONPATH&quot;</span><span class="p">)</span> <span class="p">?</span> <span class="s2">&quot;:&quot;</span> <span class="o">+</span> <span class="no">ENV</span><span class="o">[</span><span class="s2">&quot;PYTHONPATH&quot;</span><span class="o">]</span> <span class="p">:</span> <span class="s2">&quot;&quot;</span><span class="p">)</span>

<span class="no">TextMate</span><span class="o">::</span><span class="no">Executor</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">command</span><span class="p">)</span> <span class="k">do</span> <span class="o">|</span><span class="n">str</span><span class="p">,</span> <span class="nb">type</span><span class="o">|</span>
  <span class="k">if</span> <span class="nb">type</span> <span class="o">==</span> <span class="ss">:err</span>
    <span class="k">if</span> <span class="n">str</span> <span class="o">=~</span> <span class="sr">/\A[\.EF]*\Z/</span>
      <span class="n">str</span><span class="o">.</span><span class="n">gsub!</span><span class="p">(</span><span class="sr">/(\.)/</span><span class="p">,</span> <span class="s2">&quot;&lt;span class=</span><span class="se">\&quot;</span><span class="s2">test ok</span><span class="se">\&quot;</span><span class="s2">&gt;</span><span class="se">\\</span><span class="s2">1&lt;/span&gt;&quot;</span><span class="p">)</span>
      <span class="n">str</span><span class="o">.</span><span class="n">gsub!</span><span class="p">(</span><span class="sr">/(E|F)/</span><span class="p">,</span> <span class="s2">&quot;&lt;span class=</span><span class="se">\&quot;</span><span class="s2">test fail</span><span class="se">\&quot;</span><span class="s2">&gt;</span><span class="se">\\</span><span class="s2">1&lt;/span&gt;&quot;</span><span class="p">)</span>
      <span class="n">str</span> <span class="o">+</span> <span class="s2">&quot;&lt;br/&gt;</span><span class="se">\n</span><span class="s2">&quot;</span>
    <span class="k">elsif</span> <span class="n">str</span> <span class="o">=~</span> <span class="sr">/\A(FAILED.*)\Z/</span>
      <span class="s2">&quot;&lt;div class=</span><span class="se">\&quot;</span><span class="s2">test fail</span><span class="se">\&quot;</span><span class="s2">&gt;</span><span class="si">#{</span><span class="n">htmlize</span> <span class="vg">$1</span><span class="si">}</span><span class="s2">&lt;/div&gt;</span><span class="se">\n</span><span class="s2">&quot;</span>
    <span class="k">elsif</span> <span class="n">str</span> <span class="o">=~</span> <span class="sr">/\A(OK.*)\Z/</span>
      <span class="s2">&quot;&lt;div class=</span><span class="se">\&quot;</span><span class="s2">test ok</span><span class="se">\&quot;</span><span class="s2">&gt;</span><span class="si">#{</span><span class="n">htmlize</span> <span class="vg">$1</span><span class="si">}</span><span class="s2">&lt;/div&gt;</span><span class="se">\n</span><span class="s2">&quot;</span>
    <span class="k">elsif</span> <span class="n">str</span> <span class="o">=~</span> <span class="sr">/^(\s+)File &quot;(.+)&quot;, line (\d+), in (.*)/</span>
      <span class="n">indent</span> <span class="o">=</span> <span class="vg">$1</span>
      <span class="n">file</span>   <span class="o">=</span> <span class="vg">$2</span>
      <span class="n">line</span>   <span class="o">=</span> <span class="vg">$3</span>
      <span class="nb">method</span> <span class="o">=</span> <span class="vg">$4</span>
      <span class="n">indent</span> <span class="o">+=</span> <span class="s2">&quot; &quot;</span> <span class="k">if</span> <span class="n">file</span><span class="o">.</span><span class="n">sub!</span><span class="p">(</span><span class="sr">/^\&quot;(.*)\&quot;/</span><span class="p">,</span><span class="s2">&quot;</span><span class="se">\1</span><span class="s2">&quot;</span><span class="p">)</span>
      <span class="n">url</span> <span class="o">=</span> <span class="s2">&quot;&amp;url=file://&quot;</span> <span class="o">+</span> <span class="n">e_url</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
      <span class="n">display_name</span> <span class="o">=</span> <span class="n">file</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">last</span>
      <span class="s2">&quot;</span><span class="si">#{</span><span class="n">htmlize</span><span class="p">(</span><span class="n">indent</span><span class="p">)</span><span class="si">}</span><span class="s2">&lt;a class=</span><span class="se">\&quot;</span><span class="s2">near</span><span class="se">\&quot;</span><span class="s2"> href=</span><span class="se">\&quot;</span><span class="s2">txmt://open?line=</span><span class="si">#{</span><span class="n">line</span> <span class="o">+</span> <span class="n">url</span><span class="si">}</span><span class="se">\&quot;</span><span class="s2">&gt;&quot;</span> <span class="o">+</span>
        <span class="p">(</span><span class="nb">method</span> <span class="p">?</span> <span class="s2">&quot;method </span><span class="si">#{</span><span class="nb">method</span><span class="si">}</span><span class="s2">&quot;</span> <span class="p">:</span> <span class="s2">&quot;&lt;em&gt;at top level&lt;/em&gt;&quot;</span><span class="p">)</span> <span class="o">+</span>
        <span class="s2">&quot;&lt;/a&gt; in &lt;strong&gt;</span><span class="si">#{</span><span class="n">display_name</span><span class="si">}</span><span class="s2">&lt;/strong&gt; at line </span><span class="si">#{</span><span class="n">line</span><span class="si">}</span><span class="s2">&lt;br/&gt;</span><span class="se">\n</span><span class="s2">&quot;</span>
    <span class="k">end</span>
  <span class="k">end</span>
<span class="k">end</span>
</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://schinckel.net/2009/04/24/run-django-tests-from-textmate/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Flaky Internet at 8:21pm</title>
		<link>http://schinckel.net/2009/04/19/flaky-internet-at-821pm/</link>
		<comments>http://schinckel.net/2009/04/19/flaky-internet-at-821pm/#comments</comments>
		<pubDate>Sun, 19 Apr 2009 10:54:13 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
		
		<category><![CDATA[Internet]]></category>

		<category><![CDATA[Internode]]></category>

		<guid isPermaLink="false">http://schinckel.net/2009/04/19/flaky-internet-at-821pm/</guid>
		<description><![CDATA[I seem to recall my internet going down, and then coming back up, at around the same time every night.
Tonight it flaked at 8:21pm.
]]></description>
			<content:encoded><![CDATA[<p>I seem to recall my internet going down, and then coming back up, at around the same time every night.</p>
<p>Tonight it flaked at 8:21pm.</p>
]]></content:encoded>
			<wfw:commentRss>http://schinckel.net/2009/04/19/flaky-internet-at-821pm/feed/</wfw:commentRss>
		</item>
		<item>
		<title>What is the opposite of iTunes Genius?</title>
		<link>http://schinckel.net/2009/04/19/what-is-the-opposite-of-itunes-genius/</link>
		<comments>http://schinckel.net/2009/04/19/what-is-the-opposite-of-itunes-genius/#comments</comments>
		<pubDate>Sun, 19 Apr 2009 10:11:09 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
		
		<category><![CDATA[iTunes]]></category>

		<guid isPermaLink="false">http://schinckel.net/2009/04/19/what-is-the-opposite-of-itunes-genius/</guid>
		<description><![CDATA[I didn&#8217;t realise until today that there was a part of iTunes Genius that makes suggestions when browsing the iTunes store.
I went to click on one item, and got:

Now, why would you go and recommend something you can&#8217;t give me? That is just plain mean!
]]></description>
			<content:encoded><![CDATA[<p>I didn&#8217;t realise until today that there was a part of iTunes Genius that makes suggestions when browsing the iTunes store.</p>
<p>I went to click on one item, and got:</p>
<p><a href="http://www.quicksnapper.com/schinckel/image/itunes-retard"><img src="http://www.quicksnapper.com/files/4901/141098117149EAF87DF31D3_m.png" title="Hosted by QuickSnapper.com" /></a></p>
<p>Now, why would you go and recommend something you can&#8217;t give me? That is just plain mean!</p>
]]></content:encoded>
			<wfw:commentRss>http://schinckel.net/2009/04/19/what-is-the-opposite-of-itunes-genius/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
