<?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</title>
    <link>http://www.ignition-project.com</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Open Source Collaboration Solutions</description>
    <item>
      <title>Spotify on Linux: Easy Edition</title>
      <description>&lt;p&gt;Here&amp;#8217;s a script I just wrote that installs Spotify on Linux with Wine. Works great with Wine 1.3.24 on Gentoo Linux x86_64 with PulseAudio (which works great and isn&amp;#8217;t choppy or anything).&lt;/p&gt;

&lt;p&gt;P.S. In the Spotify installer, don&amp;#8217;t tell it to start when done.&lt;/p&gt;

&lt;pre&gt;
#!/bin/sh

# Download spotify and winetricks
wget http://download.spotify.com/Spotify%20Installer.exe -O /tmp/spotify.exe
wget http://winetricks.org/winetricks -O /tmp/winetricks
chmod +x /tmp/winetricks

# Configure $WINEPREFIX
export WINEPREFIX="$HOME/.wine-spotify"
wineboot

# Set some various registry keys (Spotify recommends you use 44100/Emulation)
wine reg add HKEY_CURRENT_USER\\Software\\Wine\\Drivers /v Audio /t REG_SZ /d pulse /f
wine reg add HKEY_CURRENT_USER\\Software\\Wine\\DirectSound /v DefaultSampleRate /t REG_SZ /d 44100 /f
wine reg add HKEY_CURRENT_USER\\Software\\Wine\\DirectSound /v HardwareAcceleration /t REG_SZ /d Emulation /f

# Install some required packages (IE6 may provide WinInet, if so then it's safe to remove that)
/tmp/winetricks wininet ie6 corefonts tahoma winhttp wmp10 secur32

# Copy the WMP10 MP3 decoder on top of Wine's, tell Wine to use it instead.
cp -fv $WINEPREFIX/drive_c/windows/system32/l3codecp.acm $WINEPREFIX/drive_c/windows/system32/winemp3.acm
wine reg add HKEY_CURRENT_USER\\Software\\Wine\\DllOverrides /v winemp3.acm /t REG_SZ /d native,builtin /f

# Install Spotify.
wine /tmp/spotify.exe

# Remove temporary files
rm /tmp/spotify.exe
rm /tmp/winetricks
&lt;/pre&gt;</description>
      <pubDate>Thu, 04 Aug 2011 22:50:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:b3edae28-4381-4d04-a00e-26361570d31f</guid>
      <author>Keith Gable</author>
      <link>http://www.ignition-project.com/articles/2011/08/04/spotify-on-linux-easy-edition</link>
      <category>Howto</category>
      <category>Linux</category>
      <category>wine</category>
      <category>bash</category>
      <category>script</category>
      <category>spotify</category>
    </item>
    <item>
      <title>Screw you, Shell!</title>
      <description>&lt;p&gt;I wrote in to Shell Customer Care to attempt to find if they have any premium Diesel in Tulsa, since I can&amp;#8217;t get biodiesel in the &amp;#8220;Oil Capital&amp;#8221;. Shell does have premium Diesel - you can get it at several stations in Fort Smith, AR (one I know of for sure is the Massard Rd Shell across from Wal-Mart on Zero St). Premium Diesel costs 8-12 cents more than regular Diesel, but I get a lot more miles per gallon (42-48 vs 34-37).&lt;/p&gt;

&lt;p&gt;Since premium Diesel is slightly obscure, it would make sense that their retail location locator doesn&amp;#8217;t have an option for it (it doesn&amp;#8217;t have E85 either). QuikTrip&amp;#8217;s locator doesn&amp;#8217;t even have Diesel as a filter option. The difference is that QuikTrip&amp;#8217;s support people gave me a list of locations when I wrote in. Here&amp;#8217;s what I wrote Shell to attempt to get QuikTrip-like service in determining what (if any) stations offer premium Diesel:&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;Hello,&lt;/p&gt;
    
    &lt;p&gt;I&amp;#8217;m trying to see if Shell Premium Diesel is available in or around
    Tulsa, OK (ZIP 74112). I believe this is branded as V-Power Diesel.&lt;/p&gt;
    
    &lt;p&gt;Thanks!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I&amp;#8217;m pretty sure that the people they pay to answer questions understand about 6 words in English, and around 30 words in any language, because they replied with this:&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;Dear KEITH GABLE,&lt;/p&gt;
    
    &lt;p&gt;Thank you for taking the time to contact the Shell Customer Care Center.&lt;/p&gt;
    
    &lt;p&gt;This is in response to your request for assistance in locating Shell branded retail
    stations.  Locations can be found on our website:  www.localshell.com. Please check the 
    diesel box and add the city and state or zip code for the list of Shell station who 
    serves diesel.&lt;/p&gt;
    
    &lt;p&gt;If you need to plan a trip, please utilize the route planner option on the left side of 
    the screen at www.localshell.com. With this function you may locate all the Shell 
    stations along your route.&lt;/p&gt;
    
    &lt;p&gt;We thank you for your patronage.  If you need further assistance please contact our 
    Shell Solutions Center at 1-888-GO-Shell (1-888-467-4355).&lt;/p&gt;
    
    &lt;p&gt;Sincerely,
    Shell Customer Care&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Thanks for reading my e-mail, guys! I wrote you guys after spending quite a bit of time searching your site, and already came across that locator. So, I wrote them back and told them that. Then they replied:&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;Dear KEITH GABLE:&lt;/p&gt;
    
    &lt;p&gt;Thank you for your communication.&lt;/p&gt;
    
    &lt;p&gt;This is in response to your email regarding your inquiry of the Shell Staion in Tulsa OK 
    that offers Premium Diesel.&lt;/p&gt;
    
    &lt;p&gt;Please be advised that due to system limitation our www.localshell.com can only provide 
    you with stations that offers Diesel.&lt;/p&gt;
    
    &lt;p&gt;We appreciate the opportunity to serve you in this matter and look forward to providing 
    you with quality Shell branded products and service in the future. If you have need 
    further assistance, please contact Shell Solutions Center at 1-888-GO-SHELL (1-888-467-
    4355).&lt;/p&gt;
    
    &lt;p&gt;Sincerely,
    Shell Customer Care&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In other words, &amp;#8220;if we can&amp;#8217;t find it on the same site you can find it on, then we&amp;#8217;re not going to ask someone to look it up for you&amp;#8221;. Thanks for the fucking effort. I&amp;#8217;m sure the station owner likes that you guys aren&amp;#8217;t sending business to them as well. Seriously, how do these miserable assholes become customer support specialists? Someone at QuikTrip should either school these guys, or decide to offer premium Diesel. Of course, my real preference would be for &lt;a href="http://countrymark.com/"&gt;CountryMark&lt;/a&gt; to open some locations in Oklahoma, but that&amp;#8217;s never going to happen :)&lt;/p&gt;</description>
      <pubDate>Thu, 17 Feb 2011 09:11:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:41292219-4b9d-4145-b81d-d0edf4ea3570</guid>
      <author>Keith Gable</author>
      <link>http://www.ignition-project.com/articles/2011/02/17/screw-you-shell</link>
      <category>Cars</category>
      <category>douchebags</category>
    </item>
    <item>
      <title>A Letter to the City of Tulsa</title>
      <description>&lt;p&gt;I just sent this letter to the City of Tulsa via their &lt;a href="http://www.cityoftulsa.org/reporting/general-contact.aspx"&gt;contact form&lt;/a&gt;. This snow and lack of anyone doing anything about it is really driving me nuts.&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;I hope this doesn&amp;#8217;t sound too rude, but I feel like I have to say something. Why are none
    of the streets sanded and salted for the pending snow storm? Why weren&amp;#8217;t they last week?
    I&amp;#8217;m not sure how much salt and sand cost, but I&amp;#8217;m sure if you were to compare the cost of
    salt and sand to lost tax revenue due to businesses not being able to be open, it would be
    cheaper to actually buy salt and sand. And that&amp;#8217;s leaving out the part that there are a 
    lot of people who aren&amp;#8217;t going to be paid for this time off.&lt;/p&gt;
    
    &lt;p&gt;The purpose of a government is to protect its citizens. It seems that by choosing not to
    adequately prepare for these storms &amp;#8211; the worst in decades &amp;#8211; that the City of Tulsa is 
    choosing not to protect its citizens. I want to know why. What is more important? Whose 
    budget is more important than the safety and financial security of the citizens of this 
    city?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Think the City of Tulsa can do better? &lt;a href="http://www.facebook.com/pages/Tell-The-City-Of-Tulsa-To-Do-Better/126829804051989" title="Tell The City of Tulsa to Do Better"&gt;Join the Facebook page&lt;/a&gt; someone set up for it.&lt;/p&gt;</description>
      <pubDate>Tue, 08 Feb 2011 23:33:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:e7b1b049-4f5f-42c9-90af-e9528c89ba44</guid>
      <author>Keith Gable</author>
      <link>http://www.ignition-project.com/articles/2011/02/08/a-letter-to-the-city-of-tulsa</link>
      <category>douchebags</category>
      <category>tulsa</category>
      <category>government</category>
    </item>
    <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>Accessibility Issues You Wouldn't Think About</title>
      <description>&lt;p&gt;When you write web pages, accessibility should be a key issue on your mind. Everyone should be on the &lt;code&gt;alt&lt;/code&gt; bandwagon, and hopefully thinking about how someone with an aural or a visual disability might parse your web page. But there are some things you just don&amp;#8217;t even think about and anyone pointing it out would just be helping you, right? :)&lt;/p&gt;

&lt;p&gt;The issue I&amp;#8217;m speaking of is writing content with phrases in it that require aural or visual ability. For example:&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;Please look around on our site.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Can you look around a site if you can&amp;#8217;t see it? I wouldn&amp;#8217;t think so. &amp;#8220;Please browse our site&amp;#8221; might make a little more sense but it has a separate issue of basically &lt;em&gt;begging&lt;/em&gt; your visitor to browse your page without giving them any information as to what they&amp;#8217;re browsing to. Give them a short list of awesome things you can do: &amp;#8220;You can learn about X, Y, and Z on our site.&amp;#8221;&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;Click here.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If a tree falls in a forest and nobody&amp;#8217;s around, does it make a sound? If you press a mouse button and can&amp;#8217;t hear it make a sound, does it click? Well, no. You should always link to a phrase or word that makes sense. &amp;#8220;Click here to schedule a tour.&amp;#8221; is inferior compared to &amp;#8220;Schedule a tour today to learn about X, Y, and Z.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Another thing I&amp;#8217;ll bring up is the &lt;a href="http://en.wikipedia.org/wiki/Oxford_comma"&gt;Oxford comma&lt;/a&gt;. Growing up, they taught us to &lt;strong&gt;always&lt;/strong&gt; use an Oxford comma, so pardon me if I sound biased. Anyways, I always say to include it because screen readers are &lt;em&gt;stupid&lt;/em&gt; and won&amp;#8217;t put the right emphasis on a list consistently unless you explicitly delineate the list. Plus, the US government printing office requires it, so that seems like a good enough reason to include it in sentences. &lt;/p&gt;</description>
      <pubDate>Wed, 02 Sep 2009 08:23:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:71cc2087-d9b6-45de-9fbd-df08e0363a41</guid>
      <author>Keith Gable</author>
      <link>http://www.ignition-project.com/articles/2009/09/02/accessibility-issues-you-wouldnt-think-about</link>
      <category>Howto</category>
      <category>accessibility</category>
      <category>rant</category>
      <category>html</category>
    </item>
    <item>
      <title>WTF.</title>
      <description>&lt;p&gt;&lt;img src="http://www.ignition-project.com/files/omfg.png" alt="Photoshop using less RAM than Word"/&gt;&lt;/p&gt;

&lt;p&gt;How is it that Word with one document open is using more RAM than Photoshop with like 10 images open?&lt;/p&gt;</description>
      <pubDate>Wed, 03 Jun 2009 10:46:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:7a2e8020-3780-478f-a21f-369742fd1109</guid>
      <author>Keith Gable</author>
      <link>http://www.ignition-project.com/articles/2009/06/03/wtf</link>
      <category>wtf</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>Howto: Use GNOME media keys with Amarok 2.0</title>
      <description>&lt;p&gt;Actually, this will work for anyone, regardless of desktop environment. GNOME users are the most affected, because GNOME doesn&amp;#8217;t send keys to Amarok for it to process.&lt;/p&gt;

&lt;p&gt;Anyway, this is really simple. First you need to know what your media keys are. I have a &lt;a href="http://www.daskeyboard.com/"&gt;Das Keyboard Professional&lt;/a&gt; so it lacks media keys; I use Meta and the numberpad to control my media stuff.&lt;/p&gt;

&lt;p&gt;First, install &lt;code&gt;xbindkeys&lt;/code&gt;. You probably already have it. Next, &lt;strong&gt;turn off Caps Lock, Numlock, and Scroll Lock&lt;/strong&gt;, then use &lt;code&gt;xbindkeys --key&lt;/code&gt; and press the key or key combination you want. You will likely get a name for the key like &lt;code&gt;XFMediaPlayPause&lt;/code&gt;. Failing that, you&amp;#8217;ll get a code. Either will work. Copy the code or better yet the name.&lt;/p&gt;

&lt;p&gt;Edit &lt;code&gt;~/.xbindkeys&lt;/code&gt;. Make yours like this:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;&amp;quot;amarok --play-pause&amp;quot;
  Mod4 + KP_Multiply

&amp;quot;amarok --next&amp;quot;
  Mod4 + KP_Add

&amp;quot;amarok --previous&amp;quot;
  Mod4 + KP_Subtract&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;First line isn&amp;#8217;t indented and is the command to execute. Second is indented two spaces and the code you got previously.&lt;/p&gt;

&lt;p&gt;Add &lt;code&gt;xbindkeys&lt;/code&gt; to ~/.xinitrc (you may need to create it, &lt;code&gt;chmod +x&lt;/code&gt; it, and put &lt;code&gt;#!/bin/bash&lt;/code&gt; at the beginning of the file).&lt;/p&gt;

&lt;p&gt;Hopefully that helps!&lt;/p&gt;</description>
      <pubDate>Sun, 11 Jan 2009 23:45:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:dfd7b1de-8ab3-4db0-9154-ff9376149eb4</guid>
      <author>Keith Gable</author>
      <link>http://www.ignition-project.com/articles/2009/01/11/howto-use-gnome-media-keys-with-amarok-2-0</link>
      <category>Howto</category>
      <category>Linux</category>
      <category>howto</category>
      <category>amarok</category>
      <category>gnome</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>
  </channel>
</rss>

