<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<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>The Ignition Project: Category Hacks</title>
    <link>http://www.ignition-project.com/articles/category/hacks</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Open Source Collaboration Solutions</description>
    <item>
      <title>WekeRoad Ink for Visual Studio with Ruby in Steel</title>
      <description>&lt;p&gt;Just started playing with Ruby in Steel and I had to add some styles for Ruby/Rails to the &lt;a href="http://studiostyles.info/schemes/wekeroad-ink"&gt;WekeRoad Ink&lt;/a&gt; theme. Here they are:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_xml "&gt;&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;Item&lt;/span&gt; &lt;span class="attribute"&gt;Name&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Ruby Constant&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Foreground&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x00AF912B&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Background&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x02000000&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;BoldFont&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;No&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;Item&lt;/span&gt; &lt;span class="attribute"&gt;Name&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Ruby Method Def&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Foreground&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x02000000&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Background&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x02000000&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;BoldFont&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;No&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;Item&lt;/span&gt; &lt;span class="attribute"&gt;Name&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Ruby Method Call&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Foreground&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x02000000&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Background&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x02000000&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;BoldFont&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;No&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;Item&lt;/span&gt; &lt;span class="attribute"&gt;Name&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Ruby Symbol&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Foreground&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x00FFFF00&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Background&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x02000000&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;BoldFont&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;No&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;Item&lt;/span&gt; &lt;span class="attribute"&gt;Name&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Ruby IVar&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Foreground&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x003248DA&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Background&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x02000000&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;BoldFont&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;No&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;Item&lt;/span&gt; &lt;span class="attribute"&gt;Name&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Ruby GVar&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Foreground&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x02000000&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Background&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x02000000&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;BoldFont&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Yes&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;Item&lt;/span&gt; &lt;span class="attribute"&gt;Name&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Ruby CVar&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Foreground&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x003248DA&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Background&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x02000000&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;BoldFont&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Yes&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;Item&lt;/span&gt; &lt;span class="attribute"&gt;Name&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Ruby Class Def&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Foreground&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x006DC6FF&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Background&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x02000000&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;BoldFont&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;No&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;Item&lt;/span&gt; &lt;span class="attribute"&gt;Name&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Ruby Module Def&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Foreground&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x00AF912B&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Background&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x02000000&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;BoldFont&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;No&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;Item&lt;/span&gt; &lt;span class="attribute"&gt;Name&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Ruby Regular Expression&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Foreground&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x00FF1CFF&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Background&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x00000000&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;BoldFont&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;No&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;Item&lt;/span&gt; &lt;span class="attribute"&gt;Name&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Rails Attribute Name&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Foreground&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x02000000&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Background&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x02000000&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;BoldFont&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;No&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;Item&lt;/span&gt; &lt;span class="attribute"&gt;Name&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Rails Attribute Value&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Foreground&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x005CC2A5&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Background&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x02000000&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;BoldFont&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;No&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;Item&lt;/span&gt; &lt;span class="attribute"&gt;Name&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Rails Element Name&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Foreground&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x006DC6FF&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Background&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x02000000&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;BoldFont&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;No&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;Item&lt;/span&gt; &lt;span class="attribute"&gt;Name&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Rails Entity&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Foreground&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x000000FF&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Background&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x02000000&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;BoldFont&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;No&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;Item&lt;/span&gt; &lt;span class="attribute"&gt;Name&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Rails Server-Side Script&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Foreground&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x00BB9768&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Background&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x02000000&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;BoldFont&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;No&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;Item&lt;/span&gt; &lt;span class="attribute"&gt;Name&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Rails Tag Delimiter&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Foreground&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x00FFFFFF&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;Background&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;0x02000000&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;BoldFont&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;No&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Thu, 16 Sep 2010 10:35:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:060bc024-c324-4904-9b0b-20e7daeb8c4e</guid>
      <author>Keith Gable</author>
      <link>http://www.ignition-project.com/articles/2010/09/16/wekeroad-ink-for-visual-studio-with-ruby-in-steel</link>
      <category>Howto</category>
      <category>Hacks</category>
      <category>Ruby</category>
      <category>visualstudio</category>
      <category>windows</category>
      <category>theme</category>
    </item>
    <item>
      <title>Praise Google!</title>
      <description>&lt;p&gt;After literally hours of scouring the web trying to find a solution to a SIMPLE problem, I finally came across it.&lt;/p&gt;

&lt;p&gt;What&amp;#8217;s the problem you ask? Well, I have a Mongrel application server running a Rails application. We&amp;#8217;re authenticating to this application using &lt;code&gt;mod_auth_sspi&lt;/code&gt; in Apache. This is fine, but it doesn&amp;#8217;t permit the application to know who is on the other end (and we can&amp;#8217;t rely on the &lt;code&gt;Authorization&lt;/code&gt; header). So finally, I googled the right thing, and came up with &lt;a href="http://blog.craz8.com/pages/authenticate-as-remote-user-plugin"&gt;this post on CRAZ8&lt;/a&gt; that they implemented as a plugin. Here&amp;#8217;s the bit I care about:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;RewriteEngine On
RewriteCond %{LA-U:REMOTE_USER} (.+)
RewriteRule .* - [E=RU:%1]
RequestHeader add REMOTE_USER %{RU}e&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;To quote CRAZ8:&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;Here&#8217;s what this Rewrite-fu does:&lt;/p&gt;
    
    &lt;p&gt;Line 2: Use lookahead access to get REMOTE_USER set by authentication module
    Line 3: Transfer the results of line 2 into an environment variable called RU
    Line 4: Set a Request header to the environment variable from line 3.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Thanks!&lt;/p&gt;</description>
      <pubDate>Wed, 01 Apr 2009 10:04:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:387d5b38-493c-475d-835a-2da6052714e4</guid>
      <author>Keith Gable</author>
      <link>http://www.ignition-project.com/articles/2009/04/01/praise-google</link>
      <category>Hacks</category>
      <category>apache</category>
      <category>rails</category>
    </item>
    <item>
      <title>Fix: Dolphin hijacks the GNOME Places menu</title>
      <description>&lt;p&gt;I had a problem where items in the GNOME Places menu were opening in Dolphin (and weren&amp;#8217;t working). Somehow Dolphin hijacked the &lt;code&gt;file://&lt;/code&gt; protocol. The fix is simple though is something I just found by looking around in GConf Editor.&lt;/p&gt;

&lt;p&gt;Why would I have Dolphin installed in GNOME you ask? Amarok 2.0 needs it. By the way it&amp;#8217;s nice.&lt;/p&gt;

&lt;p&gt;Do this as your normal user (&lt;strong&gt;not root&lt;/strong&gt;):&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;gconftool-2 --set --type=string /desktop/gnome/url-handlers/file/command 'nautilus &amp;quot;%s&amp;quot;'
gconftool-2 --set --type=bool /desktop/gnome/url-handlers/file/enabled true
gconftool-2 --set --type=bool /desktop/gnome/url-handlers/file/need-terminal false&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Hopefully other users find this through Google, because having the GNOME Panel&amp;#8217;s Places menu launch Dolphin instead of Nautilus sucks, and this fixes it! :) (that&amp;#8217;s a paragraph of keywords, folks)&lt;/p&gt;

&lt;p&gt;(If you use a different file manager, replace the command as needed)&lt;/p&gt;</description>
      <pubDate>Thu, 08 Jan 2009 00:16:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:143478bc-ab82-4de3-b7f4-faa1878fa9fb</guid>
      <author>Keith Gable</author>
      <link>http://www.ignition-project.com/articles/2009/01/08/fix-dolphin-hijacks-the-gnome-places-menu</link>
      <category>Howto</category>
      <category>Linux</category>
      <category>Hacks</category>
      <category>gnome</category>
      <category>panel</category>
      <category>dolphin</category>
      <category>kde</category>
      <category>places</category>
      <category>nautilus</category>
    </item>
    <item>
      <title>My Deinterlacing and Post-Processing Scripts</title>
      <description>&lt;p&gt;At work, we put up a lot of Flash video. I use On2 Flix Pro for the Flash encoding part. But I get the content in a variety of formats. Perhaps the most common format we get is 480i MPEG-2 video interleaved. I&amp;#8217;m encoding on a Mac, and QuickTime cannot correctly feed the audio stream into Flix Pro because it&amp;#8217;s interleaved in the video stream. Also, Flix Pro&amp;#8217;s deinterlacer sucks. So, I use &lt;code&gt;mplayer&lt;/code&gt; and &lt;code&gt;mencoder&lt;/code&gt; to fudge the video around and deinterlace it. It&amp;#8217;s working very well. Oh yeah, you&amp;#8217;ll need &lt;a href="http://perian.org/"&gt;Perian&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Read it after the break.&lt;/p&gt;

&lt;p&gt;Wait, how do you get &lt;code&gt;mplayer&lt;/code&gt; and &lt;code&gt;mencoder&lt;/code&gt; on a Mac? &lt;code&gt;mplayer&lt;/code&gt; is included in MPlayer OSX. Show Package Contents, Resources, External_Binaries, mplayer, Show Package Contents, MacOS, and bam, your binary for mplayer is in there. &lt;code&gt;mencoder&lt;/code&gt;, on the other hand, is hard to find. I ended up using ffmpegX&amp;#8217;s &lt;code&gt;mencoder&lt;/code&gt;, which is &amp;#8220;MEncoder dev-CVS-060307-04:23-4.0.1&amp;#8221;, compared to my &lt;code&gt;mplayer&lt;/code&gt; which is &amp;#8220;MPlayer dev-SVN-r25648-4.0.1&amp;#8221; and way newer.&lt;/p&gt;

&lt;p&gt;First, I have to strip the MP3 audio stream and the MPEG-2 video stream, into separate files. I have my video rips folder set up with a &amp;#8220;scripts&amp;#8221; subfolder and a &amp;#8220;work&amp;#8221; subfolder. Here is my script to dump both streams:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;#!/bin/bash

# Takes $1 and dumps it into two files in work/
./scripts/mplayer &amp;quot;$1&amp;quot; -dumpvideo -dumpfile work/dump.m2v
./scripts/mplayer &amp;quot;$1&amp;quot; -dumpaudio -dumpfile work/dump.mp3&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Next, I run cropdetect, which is a stupid script to save me typing:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;#!/bin/bash

# Runs crop detect on the stream we dumped.
./scripts/mplayer work/dump.m2v -vf cropdetect -vo null -ao null&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Next, I run a deinterlacing and cropping filter. And postprocessing maybe, but I&amp;#8217;m not even sure if it works in &lt;code&gt;mplayer&lt;/code&gt; like it works in &lt;code&gt;mencoder&lt;/code&gt;. I&amp;#8217;m sure the latest &lt;code&gt;mencoder&lt;/code&gt; can let me combine this step with the next one. But as it stands I need to do this in two steps.&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;#!/bin/bash

# Takes work/dump.m2v and applies the crop in $1
# and deinterlaces, outputting to work/dump.deint.yuv

./scripts/mplayer work/dump.m2v -vf crop=$1,pp=de,yadif=0 \
    -vo yuv4mpeg:file=work/dump.deint.yuv&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Finally, I put both streams together, doing final postprocessing. I also convert it to HuffYUV because QuickTime can play it with &lt;a href="http://perian.org/"&gt;Perian&lt;/a&gt;. Again, I think the latest mencoder has the &lt;code&gt;yadif&lt;/code&gt; deinterlacer, which would let me combine the previous script and current script in one step. BTW - A/V sync gets off if you leave out &lt;code&gt;harddup&lt;/code&gt;.&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;#!/bin/bash

# Takes files in work and compiles them into work/output.avi
# $1 if specified is a list of additional filters to apply.

if [ &amp;quot;x$1&amp;quot; == &amp;quot;x&amp;quot; ]; then
    ./scripts/mencoder work/dump.deint.yuv -noskip -vf harddup,pp=de -ofps 30000/1001 -ovc lavc \
        -lavcopts vcodec=huffyuv:format=422p -audiofile work/dump.mp3 -oac copy -o work/output.avi
else
    ./scripts/mencoder work/dump.deint.yuv -noskip -vf harddup,pp=de,$1 -ofps 30000/1001 -ovc lavc \
        -lavcopts vcodec=huffyuv:format=422p -audiofile work/dump.mp3 -oac copy -o work/output.avi
fi&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Also, if you noticed, the previous script lets me specify additional filters on the command line if I want. Usually I have to run hqdn3d, but not always.&lt;/p&gt;

&lt;p&gt;Oh, and this will use about 1 GB per minute of content, times two because it&amp;#8217;s creating an uncompressed file twice (the final AVI and the intermediate &lt;code&gt;.deint.yuv&lt;/code&gt;). Don&amp;#8217;t run yourself out of disk space! :)&lt;/p&gt;</description>
      <pubDate>Wed, 26 Nov 2008 09:05:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:afb21c67-069b-4594-8089-e9601b2ec996</guid>
      <author>Keith Gable</author>
      <link>http://www.ignition-project.com/articles/2008/11/26/my-deinterlacing-and-post-processing-scripts</link>
      <category>Howto</category>
      <category>Linux</category>
      <category>Hacks</category>
      <category>multimedia</category>
      <category>deinterlacing</category>
      <category>mplayer</category>
    </item>
    <item>
      <title>Windows + Apache + SSPI + SSL + NTLM + IE + POST data got you down?</title>
      <description>&lt;p&gt;For some reason, when using NTLM authentication on Apache through the &lt;code&gt;mod_auth_sspi&lt;/code&gt; module (combined with SSL, but that might not be a requirement), Internet Explorer will refuse to send POST data along with a request at random points in time. It will still send a POST request, but it just doesn&amp;#8217;t send data.&lt;/p&gt;

&lt;p&gt;This seems to only affect IE users on domains with Integrated Windows Authentication (IWA). My CrossOver-emulated IE6 works fine with Basic authentication over the secure site we have set up doing IWA (of course I have to type in my credentials). But my Windows machine authenticating using IWA drops POST data!&lt;/p&gt;

&lt;p&gt;After tireless Googling, I think I have a solution. It sucks, but it&amp;#8217;s the best I can do. Suggestions welcome:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;SetEnvIf User-Agent &amp;quot;.*MSIE.*&amp;quot; ssl-unclean-shutdown
MaxKeepAliveRequests 1&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;What this does is for MSIE, it tells &lt;code&gt;mod_ssl&lt;/code&gt; to uncleanly shutdown. And it makes KeepAlive/HTTP Pipelining on, but only for one request. With KeepAlive turned off, IE doesn&amp;#8217;t work at all. It gives a &amp;#8220;Page Cannot be Displayed&amp;#8221; error&amp;#8230; probably because it&amp;#8217;s attempting to NTLM authenticate, lost the socket, and dies.&lt;/p&gt;

&lt;p&gt;What&amp;#8217;s this mean for everyone else that follows the rules? They don&amp;#8217;t get any benefit from HTTP pipelining. Which &lt;em&gt;totally&lt;/em&gt; sucks. So hopefully you don&amp;#8217;t have this problem&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Mon, 22 Sep 2008 17:47:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:562b9381-0d44-4c49-a90d-8301db50d8e6</guid>
      <author>Keith Gable</author>
      <link>http://www.ignition-project.com/articles/2008/09/22/windows-apache-sspi-ssl-ntlm-ie-post-data-got-you-down</link>
      <category>Howto</category>
      <category>Hacks</category>
      <category>microsoft</category>
      <category>stupid</category>
      <category>web</category>
      <category>administration</category>
    </item>
    <item>
      <title>Lockdown browsers are fun!</title>
      <description>&lt;p style="text-align: center;"&gt;
&lt;img src="http://www.ignition-project.com/files/lockdown_browser_hacked.jpg" alt="Lockdown Browser Hacked" style="width: 400px;" /&gt;
&lt;/p&gt;

&lt;p&gt;(code is past the break)&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;# Need: Ruby, this browser,
# and SysInternals Process Explorer

# Start Process Explorer, configure for always on
# top and only allow single instance, close it.

require 'win32ole'

BROWSER_PATH = &amp;quot;&amp;quot;
PROCEXP_PATH = &amp;quot;&amp;quot;

puts &amp;quot;Starting the lockdown browser&amp;quot;
shell = WIN32OLE.new('Shell.Application')
shell.ShellExecute(BROWSER_PATH, '', '', 'open', '1')

puts &amp;quot;Giving the lockdown browser time to breathe...&amp;quot;
sleep 10

puts &amp;quot;=&amp;gt; Ctrl-C to stop &amp;lt;=&amp;quot;

while true do
    shell = WIN32OLE.new('Shell.Application')
    shell.ShellExecute(PROCEXP_PATH, '', '', 'open', '1')
    sleep 20
end&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I&amp;#8217;m posting this because that browser frustrates me. I have to boot into Windows to use it. This makes me feel better about having to use it. Cheating or doing anything that might get you or me in trouble is a bad idea.&lt;/p&gt;

&lt;p&gt;Plus, if you can figure out this program, you probably feel my pain :)&lt;/p&gt;</description>
      <pubDate>Fri, 19 Sep 2008 20:16:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:13d0ea2b-b9a9-4a15-b232-54e8fd92518b</guid>
      <author>Keith Gable</author>
      <link>http://www.ignition-project.com/articles/2008/09/19/lockdown-browsers-are-fun</link>
      <category>Hacks</category>
      <category>SecurityThroughObscurity</category>
      <category>morons</category>
      <category>annoyance</category>
    </item>
    <item>
      <title>LG Vu (CU920) Hacks</title>
      <description>&lt;p&gt;I recently purchased an LG Vu, and I&amp;#8217;m always into making phones operate like I want to, remove all of the built in crap, and so on. If you read the rest of this post, I&amp;#8217;ve got tons of stuff that I&amp;#8217;ve been working on. It all requires &lt;a href="http://www.bitpim.org/"&gt;BitPim&lt;/a&gt;, which I just &lt;code&gt;emerge&lt;/code&gt;&amp;#8216;ed in Gentoo. Install it however you need to. You have to tell BitPim that you have an LG VX-8700. I will leave it as an exercise to the reader to know to back up the files on their expensive piece of equipment before altering them&amp;#8230;&lt;/p&gt;

&lt;h1&gt;1. LG Java Security Hack&lt;/h1&gt;

&lt;p&gt;This hack is the same on most every LG phone. Use BitPim to browse to &lt;code&gt;/LGAPP/Media/Java/cert/&lt;/code&gt;. Save the &lt;code&gt;.pol&lt;/code&gt; file in that directory. Open it in your favorite editor and find your provider&amp;#8217;s &amp;#8220;Trusted Root CA&amp;#8221; in the list of domains. It&amp;#8217;ll look like a LDAP distinguished name because that&amp;#8217;s what it is. Copy and paste all of the lines in that section, and paste them on top of the lines in the &amp;#8220;domain: untrusted&amp;#8221; section. Put that file back on your phone and you will be able to use all new applications without constantly authorizing network access. &lt;strong&gt;Currently installed applications will have to be reinstalled!&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;2. Remove Demo Applications&lt;/h1&gt;

&lt;p&gt;Browse to &lt;code&gt;/LGAPP/Media/Java/ams/&lt;/code&gt;. Delete all of the Mxxx directories (for me, I stopped at M0012) and &lt;code&gt;_folder_db_&lt;/code&gt;. Then, reboot the phone. Thanks to &lt;a href="http://www.lg-vu.com/index.php/topic,427.0.html"&gt;this forum&lt;/a&gt; for this tip.&lt;/p&gt;

&lt;h1&gt;3. Edit System Menus&lt;/h1&gt;

&lt;p&gt;Since I had just deleted Mobile E-Mail, I needed to get it off of the main screen or it would bug me. This turned out to be easy. Browse to &lt;code&gt;/LGAPP/Media/Flash/&lt;/code&gt; and download &lt;code&gt;T1_en-UK.xml&lt;/code&gt; and &lt;code&gt;T2_en-UK.xml&lt;/code&gt;. Open them in your favorite editor and remove the &amp;#8220;Mobile E-Mail&amp;#8221; item. &lt;strong&gt;You can delete but not add menu items.&lt;/strong&gt; You&amp;#8217;ll have to reboot the phone to get it to reload the menu.&lt;/p&gt;

&lt;h1&gt;4. More&lt;/h1&gt;

&lt;p&gt;I&amp;#8217;ll be updating this blog post as I figure more stuff out about my phone.&lt;/p&gt;</description>
      <pubDate>Fri, 25 Jul 2008 17:02:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:ba2714df-4468-4ba9-8dbd-d104abf0e259</guid>
      <author>Keith Gable</author>
      <link>http://www.ignition-project.com/articles/2008/07/25/lg-vu-cu920-hacks</link>
      <category>Hacks</category>
      <category>lg</category>
      <category>vu</category>
      <category>cu920</category>
    </item>
    <item>
      <title>Random Tip: Stuck Oil Filter</title>
      <description>&lt;p&gt;I change my own oil, not because it&amp;#8217;s cheaper, but because then I know what kind of work goes into it, and if there are other issues I need to be aware of. So I was out there and got to needing to get the oil filter off. It&amp;#8217;s a no-go. It won&amp;#8217;t come off. I tried everything. I tried three filter wrenches, a pair of huge channel locks, nothing helped. Although the channel locks did severely warp the can. Which actually looked kind of cool. So then I used my computer smarts&amp;#8230; &lt;em&gt;When there&amp;#8217;s something wrong with my computer, what do I do?&lt;/em&gt; &lt;strong&gt;Google it!&lt;/strong&gt; One of the first things that came up was a link to &lt;a href="http://jimsgarage.wordpress.com/2006/08/23/how-to-deal-with-that-stuck-oil-filter/" title="Jim's Garage: How to Deal With That Stuck Oil Filter"&gt;Jim&amp;#8217;s Garage&lt;/a&gt;. Apparently, and I would have never thought of this, but if you get a really long screwdriver and jam it into the can and hammer it in all the way through, your oil filter just got a nifty handle. So keep that in mind if you ever get into that kind of situation. Though you might want to hammer slowly until the oil gets out of the filter, or you&amp;#8217;ll have a nasty mess.&lt;/p&gt;

&lt;p&gt;So, maybe that&amp;#8217;ll help someone :).&lt;/p&gt;</description>
      <pubDate>Sun, 22 Jun 2008 22:29:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:3f694584-5209-4556-bc9e-4788352569d2</guid>
      <author>Keith Gable</author>
      <link>http://www.ignition-project.com/articles/2008/06/22/random-tip-stuck-oil-filter</link>
      <category>Hacks</category>
      <category>car</category>
      <category>trouble</category>
    </item>
    <item>
      <title>Wii Homebrew Channel + Case Is Here</title>
      <description>&lt;p&gt;&lt;embed src="http://www.metacafe.com/fplayer/1160910/wii_homebrew_channel.swf" width="400" height="345" wmode="transparent"  pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/p&gt;

&lt;p&gt;Also, my Evolve Black Katana case is here. It&amp;#8217;s pretty cool looking, but the paintjob looks just a tad better than something I could do myself. It&amp;#8217;s still pretty good. I give it 3 out of 5. &lt;/p&gt;</description>
      <pubDate>Sat, 22 Mar 2008 22:02:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:7c762b10-b83e-495c-bd36-9db0c4f5167a</guid>
      <author>Keith Gable</author>
      <link>http://www.ignition-project.com/articles/2008/03/22/wii-homebrew-channel-case-is-here</link>
      <category>Hacks</category>
      <category>wii</category>
      <category>talismoon</category>
      <category>case</category>
      <category>homebrew</category>
      <category>gaming</category>
    </item>
    <item>
      <title>Super Smash Bros. Brawl + WiiKey = Bad Medicine</title>
      <description>&lt;p&gt;I bought Super Smash Bros. Brawl. I expected it to run on my drivechipped Wii (chipped for homebrew btw). Well, it&amp;#8217;s the first Wii game that&amp;#8217;s dual layer, and the WiiKey incorrectly assumes that all dual layer discs are GameCube multi-game discs. Great assumption, as it was true. Now it&amp;#8217;s not. And unfortunately, &lt;a href="http://www.wiikey.cn/"&gt;WiiKey&amp;#8217;s Website&lt;/a&gt; is showing the default &lt;acronym title="Red Hat Enterprise Linux"&gt;RHEL&lt;/acronym&gt; test page and apparently has been for some time now.&lt;/p&gt;

&lt;p&gt;Shit.&lt;/p&gt;

&lt;p&gt;So Googling around, I found out that the WiiKey is compatible with the &lt;a href="http://www.openwii.org/"&gt;OpenWii&lt;/a&gt; firmware. Great! Except the sucky part is that &lt;a href="http://www.openwii.org/"&gt;OpenWii&lt;/a&gt; requires programming the chip directly rather than using a DVD. Not that big of a problem, I guess. The biggest problem I&amp;#8217;m going to encounter in swapping my WiiKey to run OpenWii is the fact I have to solder on SMD chips and I don&amp;#8217;t have good enough magnification (I could probably use a jewelers magnification thingy). Also my soldering iron tip is quite large and my soldering iron doesn&amp;#8217;t really have a selection of bits for it with a finer point than what I have. Meh. Also I have to take apart the Wii again, which is an adventure in itself&amp;#8230;&lt;/p&gt;

&lt;p&gt;So&amp;#8230; What am I going to do? I could just desolder the WiiKey and say &amp;#8220;screw it&amp;#8221;, but that defeats the purpose of it (especially since huge strides have been made in homebrew). So, I think I&amp;#8217;m going to do this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Using &lt;a href="http://www.openwii.org/forums/viewtopic.php?t=453" title="How To Convert WiiKey to OpenWii"&gt;this guide&lt;/a&gt; I&amp;#8217;m going to rewire my WiiKey (yes, I&amp;#8217;ll take pictures) and put a port on the back of my Wii which will connect to a modified parallel port cable.&lt;/li&gt;
&lt;li&gt;While I have the Wii open, I&amp;#8217;ll take it apart the rest of the way and put it in a new &lt;a href="http://www.talismoon.com/cgi-bin/multipage/engine.pl?function=viewid&amp;amp;id=RKS00063&amp;amp;cat=WII-TUNING" title="Talismoon: Black Katana Wii Case"&gt;awesome case&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I&amp;#8217;ll also install a switch on the Wii so that I can turn off the modchip if needed (this switch would be required because the diagram shows that the WiiKey requires power from the parallel port during programming, and I don&amp;#8217;t want the possibility of shorting the Wii - so I&amp;#8217;ll probably install two switches, one for programmer power ON/OFF and one for DVDROM power ON/OFF). This will avoid this problem from ever occuring again.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Though, like an idiot, I &amp;#8220;quicksoldered&amp;#8221; the thing to my Wii. In hindsight, it would have been faster to actually use wire, since I ended up tearing a trace off the drive and had to solder to the actual drive chip (luckily the &amp;#8220;debug port&amp;#8221; pins that were left on the drive are just shortcuts to the pins on the actual chip).&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ll keep everyone posted with updates.&lt;/p&gt;</description>
      <pubDate>Mon, 17 Mar 2008 00:01:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:11fda722-bc7d-4a9c-8d68-a25bd5b2c6f6</guid>
      <author>Keith Gable</author>
      <link>http://www.ignition-project.com/articles/2008/03/17/super-smash-bros-brawl-wiikey-bad-medicine</link>
      <category>Electronics</category>
      <category>Hacks</category>
      <category>wii</category>
      <category>wiikey</category>
      <category>mod</category>
      <category>gaming</category>
      <category>nintendo</category>
    </item>
  </channel>
</rss>

