<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Biodegradable Geek &#187; Tools</title>
	<atom:link href="http://biodegradablegeek.com/category/editors-tools/feed/" rel="self" type="application/rss+xml" />
	<link>http://biodegradablegeek.com</link>
	<description></description>
	<lastBuildDate>Tue, 22 Jun 2010 21:52:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Small Vim Shortcut for PHP Tags</title>
		<link>http://biodegradablegeek.com/2009/09/small-vim-shortcut-for-php-tags/</link>
		<comments>http://biodegradablegeek.com/2009/09/small-vim-shortcut-for-php-tags/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 03:59:44 +0000</pubDate>
		<dc:creator>Isam</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[annoying]]></category>
		<category><![CDATA[editors]]></category>
		<category><![CDATA[gvim]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[vi]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://biodegradablegeek.com/2009/09/small-vim-shortcut-for-php-tags/</guid>
		<description><![CDATA[The short tags in PHP have been deprecated as of 5.3.0. Short tags provided a shorter alternative to the annoying-to-type &#60;?php and &#60;?php echo. Instead, you could use &#60;? and &#60;?= respectively. This was great but it caused problems when working with XML files, and the short_tags option was disabled in the PHP config by [...]]]></description>
			<content:encoded><![CDATA[<p>The short tags in PHP have been deprecated as of 5.3.0. Short tags provided a shorter alternative to the annoying-to-type &lt;?php and &lt;?php echo. Instead, you could use &lt;? and &lt;?= respectively. This was great but it caused problems when working with XML files, and the short_tags option was disabled in the PHP config by default on some implementations.</p>
<p>To make life easier, I created this vim mapping that will expand <b>&lt;?</b> to &lt;?php and <b>&lt;??</b> to &lt;?php echo. You may change the abbreviation as you see fit. Simply place this in your .vimrc</p>
<pre class="brush: plain;">
inoremap &lt;??    &lt;?php echo  ?&gt;&lt;Left&gt;&lt;Left&gt;&lt;Left&gt;
inoremap &lt;?     &lt;?php  ?&gt;&lt;Left&gt;&lt;Left&gt;&lt;Left&gt;
</pre>
<p>Re-open vim or type use :source ~/.vimrc to reload the config. Now just type &lt;? or &lt;?? in insert mode.</p>
]]></content:encoded>
			<wfw:commentRss>http://biodegradablegeek.com/2009/09/small-vim-shortcut-for-php-tags/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Block AIM&#8217;s Annoying &#8216;AOL System Msg&#8217; in Pidgin</title>
		<link>http://biodegradablegeek.com/2009/05/how-to-block-aims-annoying-aol-system-msg-in-pidgin/</link>
		<comments>http://biodegradablegeek.com/2009/05/how-to-block-aims-annoying-aol-system-msg-in-pidgin/#comments</comments>
		<pubDate>Sat, 02 May 2009 04:44:12 +0000</pubDate>
		<dc:creator>Isam</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Workarounds]]></category>
		<category><![CDATA[annoying]]></category>
		<category><![CDATA[chat]]></category>
		<category><![CDATA[pidgin]]></category>

		<guid isPermaLink="false">http://biodegradablegeek.com/?p=426</guid>
		<description><![CDATA[The following plugin for Pidgin will block the incredibly annoying and useless notifications from AOLSystemMsg on AIM.
&#8220;AOL System Msg: Your screen name (mrEman) is now signed into AOL(R) Instant Messenger (TM) in 2 locations. Click here for more information.&#8221;
To use, paste code in file, save file as blockaolsystemmsg.pl in ~/.purple/plugins/ and then open (or re-open) [...]]]></description>
			<content:encoded><![CDATA[<p>The following plugin for <a href="http://www.pidgin.im/">Pidgin</a> will block the incredibly annoying and useless notifications from AOLSystemMsg on AIM.</p>
<blockquote><p>&#8220;AOL System Msg: Your screen name (mrEman) is now signed into AOL(R) Instant Messenger (TM) in 2 locations. Click here for more information.&#8221;</p></blockquote>
<p>To use, paste code in file, save file as <strong>blockaolsystemmsg.pl</strong> in <strong>~/.purple/plugins/</strong> and then open (or re-open) Pidgin and go to Tools -&gt; Plugins (or press CTRL+U), and enable &#8220;Block AOLSystemMsg.&#8221; That should be it!</p>
<p><em>If you&#8217;re having any trouble, try going to Help -> Debug to open up Pidgin&#8217;s debug console. </em></p>
<pre class="brush: perl;">
#!/usr/bin/perl
# BlockAOLSystemMsg plugin tested on Pidgin 2.5.5. Put in ~/.purple/plugins/ and enable
use Purple;
our $target = 'AOL System Msg'; # case-insensitive
our $plugin_name = 'Block AOLSystemMsg'; 

%PLUGIN_INFO = (
  perl_api_version =&gt; 2,
  name =&gt; $plugin_name,
  version =&gt; &quot;0.1&quot;,
  summary =&gt; &quot;Blocks the screen name 'AOL System Msg'&quot;,
  description =&gt; &quot;Ignore annoying 'your SN has signed on at 2 locations' AIM message&quot;,
  author =&gt; &quot;Isam &quot;,
  url =&gt; &quot;http://biodegradablegeek.com&quot;,
  load =&gt; &quot;plugin_load&quot;,
  unload =&gt; &quot;plugin_unload&quot;
);

sub loginfo { Purple::Debug::info($plugin_name, &quot; @_\n&quot;); }
sub minimize {
  my $r = lc($_[0]);
  $r =~ s/ //g;
  return $r;
}

sub plugin_init { return %PLUGIN_INFO; }

sub plugin_load {
  my $plugin = shift;
  $target = minimize($target);
  loginfo(&quot;Sight set on '$target'&quot;);
  Purple::Signal::connect(Purple::Conversations::get_handle(),
                          'receiving-im-msg', $plugin, \&amp;callback, '');
}

sub plugin_unload {
  my $plugin = shift;
  loginfo('Block AOLSystemMsg Unloaded.');
}

sub callback {
  my ($acc, $sender, $msg, $flags) = @_;
  if (minimize($sender) eq $target) {
    loginfo(&quot;(BLOCKED) &lt;$sender&gt; $msg&quot;);
    return 1
  };
}
</pre>
<p>update: Fixed the botched code. Thanks.</p>
]]></content:encoded>
			<wfw:commentRss>http://biodegradablegeek.com/2009/05/how-to-block-aims-annoying-aol-system-msg-in-pidgin/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>I Can&#8217;t Live Without My vim Config</title>
		<link>http://biodegradablegeek.com/2009/04/i-cant-live-without-my-vim-config/</link>
		<comments>http://biodegradablegeek.com/2009/04/i-cant-live-without-my-vim-config/#comments</comments>
		<pubDate>Sat, 11 Apr 2009 17:43:18 +0000</pubDate>
		<dc:creator>Isam</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[editors]]></category>
		<category><![CDATA[gvim]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[vi]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://biodegradablegeek.com/?p=384</guid>
		<description><![CDATA[I have updated the vim page with my vimrc/gvimrc configs. Instead of repeating myself, I will quote some parts of the page ..
More details and the vim config itself here
I recommend turning backups on if you have them off. I personally hate having the ~ files all over my OS, so I keep them along [...]]]></description>
			<content:encoded><![CDATA[<p>I have updated the <a href="/vim">vim</a> page with my vimrc/gvimrc configs. Instead of repeating myself, I will quote some parts of the page ..</p>
<p><strong><a href="/vim">More details and the vim config itself here</a></strong></p>
<p>I recommend turning backups on if you have them off. I personally hate having the ~ files all over my OS, so I keep them along with the .swp files in 1 backup dir in ~/.vim/</p>
<p>The programming language skeleton stuff will detect what files you are editing and change options in vim by inheriting the specified files which I put in ~/.vim/skeletons and ~/.vim/inherit.</p>
<p>The skeletons are automatically inserted in new files that vim is aware of. For example, in my own config, I have ~/.vim/inherit/c which has all the usual includes and int main() code. When I make a new C file (&#8220;gvim hello.c&#8221;), the new file begins with the skeleton code already present. Neat huh?</p>
<p>The inherit files can be used to set specific options for each language. This can mean different bindings, whitespace options, themes, etc depending on what language you&#8217;re working with, automatically.</p>
<p><a href="/vim">See the vim page</a></p>
<p><strong>What options have helped you the most?</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://biodegradablegeek.com/2009/04/i-cant-live-without-my-vim-config/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Maintain Static Sites with Git &amp; Jekyll</title>
		<link>http://biodegradablegeek.com/2009/03/how-to-maintain-static-sites-with-git-jekyll/</link>
		<comments>http://biodegradablegeek.com/2009/03/how-to-maintain-static-sites-with-git-jekyll/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 04:10:00 +0000</pubDate>
		<dc:creator>Isam</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://biodegradablegeek.com/?p=371</guid>
		<description><![CDATA[Static sites in this context just means non-database driven sites. Your static site can be an elaborate PHP script or just a few markup and image files. For this I am using Jekyll &#8211; A neat Ruby gem that makes your static sites dynamic. It lets you create layouts and embed custom variables in your [...]]]></description>
			<content:encoded><![CDATA[<p>Static sites in this context just means non-database driven sites. Your static site can be an elaborate PHP script or just a few markup and image files. For this I am using <strong><a href="http://github.com/mojombo/jekyll/tree/master">Jekyll</a> &#8211; A neat Ruby gem that makes your static sites dynamic.</strong> It lets you create layouts and embed custom variables in your HTML (this is a &#8220;prototype&#8221; of the site). </p>
<p>Jekyll tackles all the nuisances involved in creating static pages (I used to add just enough PHP to make a layout). It works by running your prototype through some parsers and outputs plain static HTML/XML (RSS feeds) etc. It&#8217;s perfect for lightweight sites that would be impractical on Wordpress, like a few static pages of information, landing pages, portfolio/resume pages, and parked domains. </p>
<p>Git takes care of keeping your development (local) and production (remote) environments synced. Git might be a little confusing if you&#8217;re learning it with the mindset that it works like Subversion. </p>
<p><strong>I&#8217;ll update this post when the guide is done. For now, the following will assume you&#8217;re familiar with Jekyll (or at least have an empty file in the prototype directory) and git. This Bash script simplifies creating the remote git repository:</strong></p>
<p>** please read through the code and make sure you know what this does, and what you&#8217;re doing. As of now, this is bias towards my own Apache/vhost setup. It&#8217;s trivial to edit for your specific needs. <strong>You&#8217;re using this at your own risk</strong>.</p>
<p>(<a href="http://code.biodegradablegeek.com/repogen.sh" target="_blank">direct link &#8211; repogen.sh</a>)</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #666666; font-style: italic;"># </span>
<span style="color: #666666; font-style: italic;"># 04/01/2009 | http://biodegradablegeek.com | GPL </span>
<span style="color: #666666; font-style: italic;"># </span>
<span style="color: #666666; font-style: italic;"># You should be in site (NOT public) root (be in same dir as public/ log/ etc)</span>
<span style="color: #666666; font-style: italic;"># proto/ is created and will house the jekyll prototype</span>
<span style="color: #666666; font-style: italic;"># public/ will be the generated static site</span>
<span style="color: #666666; font-style: italic;"># the public/ folder will be REMOVED and regenerated on every push</span>
<span style="color: #666666; font-style: italic;"># </span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-z</span> <span style="color: #ff0000;">&quot;$1&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
  <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Usage: ./repogen.sh domain.comn&quot;</span>
  <span style="color: #7a0874; font-weight: bold;">exit</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># optional. will make it easier to copy/paste cmd to clone repo </span>
<span style="color: #007800;">SSHURL</span>=<span style="color: #ff0000;">&quot;ssh.domain.com&quot;</span>
<span style="color: #007800;">URL</span>=<span style="color: #ff0000;">&quot;$1&quot;</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;** creating tmp repo&quot;</span>
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> proto
<span style="color: #7a0874; font-weight: bold;">cd</span> proto
git init 
<span style="color: #c20cb9; font-weight: bold;">touch</span> INITIAL
git add INITIAL
git commit <span style="color: #660033;">-a</span> <span style="color: #660033;">-m</span> <span style="color: #ff0000;">&quot;Initial Commit&quot;</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;** creating bare repo&quot;</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> ..
git clone <span style="color: #660033;">--bare</span> proto proto.git
<span style="color: #c20cb9; font-weight: bold;">mv</span> proto proto.old
git clone proto.git
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> proto.old
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;** generating hook&quot;</span>
<span style="color: #007800;">HOOK</span>=proto.git<span style="color: #000000; font-weight: bold;">/</span>hooks<span style="color: #000000; font-weight: bold;">/</span>post-update
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #007800;">$HOOK</span> <span style="color: #000000; font-weight: bold;">/</span>tmp
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'#!/bin/sh'</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$HOOK</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'# To enable this hook, make this file executable by &quot;chmod +x post-update&quot;.'</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$HOOK</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'#exec git-update-server-info'</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$HOOK</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">''</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$HOOK</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">''</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$HOOK</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'URL='</span><span style="color: #ff0000;">&quot;<span style="color: #007800;">$URL</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$HOOK</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'PROTO=&quot;/home/$USER/www/$URL/proto&quot;'</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$HOOK</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'PUBLIC=&quot;/home/$USER/www/$URL/public&quot;'</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$HOOK</span>
<span style="color: #7a0874; font-weight: bold;">echo</span>  <span style="color: #ff0000;">''</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$HOOK</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'export GIT_DIR=&quot;$PROTO/.git&quot;'</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$HOOK</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'pushd $PROTO &gt; /dev/null'</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$HOOK</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'git pull'</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$HOOK</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'popd &gt; /dev/null'</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$HOOK</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">''</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$HOOK</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;echo -----------------------------&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$HOOK</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;echo '** Pushing changes to '<span style="color: #007800;">$URL</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$HOOK</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;echo '** Moving current public to /tmp'&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$HOOK</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'mv &quot;$PUBLIC&quot; &quot;/tmp/'</span><span style="color: #007800;">$URL</span><span style="color: #ff0000;">'public-`date '</span>+<span style="color: #000000; font-weight: bold;">%</span>m<span style="color: #000000; font-weight: bold;">%</span>d<span style="color: #000000; font-weight: bold;">%</span>Y<span style="color: #ff0000;">'`&quot;'</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$HOOK</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'echo &quot;** Generating new public&quot;'</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$HOOK</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'jekyll &quot;$PROTO&quot; &quot;$PUBLIC&quot;'</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$HOOK</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;** enabling hook&quot;</span>
<span style="color: #c20cb9; font-weight: bold;">chmod</span> a+x <span style="color: #007800;">$HOOK</span> 
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;** clone repo on local machina. example:&quot;</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;git clone ssh://<span style="color: #007800;">$USER</span>@<span style="color: #007800;">$SSHURL</span>/~<span style="color: #007800;">$USER</span>/www/<span style="color: #007800;">$SSHURL</span>/proto.git&quot;</span></pre></div></div>

<p><strong>Usage</strong></p>
<p>Your site structure might be different. <strong>repogen.sh</strong> is made by pasting the above code in a new file, and then chmod a+x to make it executable. This should be done on the remote server.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> www<span style="color: #000000; font-weight: bold;">/</span>domain.com<span style="color: #000000; font-weight: bold;">/</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">ls</span>
public<span style="color: #000000; font-weight: bold;">/</span> private<span style="color: #000000; font-weight: bold;">/</span> log<span style="color: #000000; font-weight: bold;">/</span> cgi-bin<span style="color: #000000; font-weight: bold;">/</span>
&nbsp;
.<span style="color: #000000; font-weight: bold;">/</span>repogen.sh domain.com</pre></div></div>

<p>Now on your local machine, clone the new repo, move your files in, and push:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">git clone <span style="color: #c20cb9; font-weight: bold;">ssh</span>:<span style="color: #000000; font-weight: bold;">//</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>username<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #000000; font-weight: bold;">@</span>ssh.domain.com<span style="color: #000000; font-weight: bold;">/</span>~<span style="color: #7a0874; font-weight: bold;">&#91;</span>username<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>domain.com<span style="color: #000000; font-weight: bold;">/</span>proto.git
<span style="color: #7a0874; font-weight: bold;">cd</span> proto<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #ff0000;">&quot;hello, world&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span> index.htm
git add index.htm
git commit <span style="color: #660033;">-a</span> <span style="color: #660033;">-m</span> <span style="color: #ff0000;">'first local commit'</span>
git push</pre></div></div>

<p>After you push your changes, the post-update hook will delete the public/ directory (the root of the site). This dir and its contents are automatically generated and will get wiped out on EVERY push. Keep this in mind. All your changes and content should reside in proto/. </p>
<p>The proto/ repo will pull in the new changes, and then Jekyll will be invoked to generate the updated site in public/ from the prototype.</p>
<p>Should you need to edit it, the <strong>post-update hook</strong> is in the bare git repo (proto.git/hooks/)</p>
<p>Thanks to the authors in the posts below for sharing ideas. I first read this git method on dmiessler&#8217;s site. </p>
<p><strong>Resources:</strong><br />
<a href="http://dmiessler.com/blog/using-git-to-maintain-your-website">dmiessler.com &#8211; using git to maintain static pages</a><br />
<a href="http://toroid.org/ams/git-website-howto">toroid.org &#8211; using git to manage a web site</a><br />
<a href="http://github.com/mojombo/jekyll/tree/master">Jekyll @ GitHub</a><br />
<a href="http://media.pragprog.com/titles/tsgit/chap-005-extract.html">git info</a><br />
<a href="http://www.nardol.org/2009/2/19/git-basics-reversing-the-git-sucks-effect">more git info</a></p>
]]></content:encoded>
			<wfw:commentRss>http://biodegradablegeek.com/2009/03/how-to-maintain-static-sites-with-git-jekyll/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Top 10 Firefox Extensions that Enhance Usability</title>
		<link>http://biodegradablegeek.com/2008/09/firefox-extensions/</link>
		<comments>http://biodegradablegeek.com/2008/09/firefox-extensions/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 19:35:40 +0000</pubDate>
		<dc:creator>Isam</dc:creator>
				<category><![CDATA[List]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[addons]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[getting shit done]]></category>
		<category><![CDATA[gvim]]></category>
		<category><![CDATA[internet addiction]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[recommended add-ons]]></category>
		<category><![CDATA[useability]]></category>
		<category><![CDATA[vi]]></category>

		<guid isPermaLink="false">http://biodegradablegeek.com/?p=108</guid>
		<description><![CDATA[All of these extensions work on Firefox 3.x
Firebug

What can I say.. Firebug is indispensable. It&#8217;s quite possibly the greatest piece of software since Firefox itself. It&#8217;s a *must* have if you do any sort of XHTML/CSS/Javascript/AJAX/er.. anything!
You can edit code on any site, live. Hate the annoying background on a specific site? Get rid of [...]]]></description>
			<content:encoded><![CDATA[<p><em>All of these extensions work on Firefox 3.x</em></p>
<p><a class="top10src" href="https://addons.mozilla.org/firefox/addon/1843" target="_blank">Firebug</a></p>
<p><img src="http://biodegradablegeek.com/wp-content/uploads/2008/09/firebug-firefox-addon.jpg" alt="firebug firefox addon Top 10 Firefox Extensions that Enhance Usability" title="Firebug firefox addon" class="plainimg alignright size-full wp-image-133" /><br />
What can I say.. Firebug is indispensable. It&#8217;s quite possibly the greatest piece of software since Firefox itself. It&#8217;s a *must* have if you do any sort of XHTML/CSS/Javascript/AJAX/er.. anything!</p>
<p>You can edit code on any site, live. Hate the annoying background on a specific site? Get rid of it. Ugly font? Change it. No contrast between colors? No problem. The changes aren&#8217;t permanent, of course (that&#8217;s what <a href="https://addons.mozilla.org/firefox/addon/748" target="_blank">Greasemonkey</a>&#8217;s for). </p>
<p>There&#8217;s no better AJAX/CSS debugger. It even has a console you can use to interact with the site. Works with AJAX libraries (since they&#8217;re essentially just Javascript), and <a href="http://jquery.com/" target="_blank">jQuery</a> can output text to the Firebug console. No more alerts()!I won&#8217;t even go into the neat array of plugins it has. </p>
<p><strong>Just get it</strong>. <em>Tip: F12 toggles Firebug, and ctrl+F12 opens it in its own window. </em></p>
<p><br/></p>
<p><a class="top10src" href="https://addons.mozilla.org/en-US/firefox/addon/8207" target="_blank">Open In Browser</a></p>
<p><em>This should be built into Firefox.</em> </p>
<p><a href="http://biodegradablegeek.com/wp-content/uploads/2008/09/open-in-browser-save-as-dialog.png" target="_new"><img src="http://biodegradablegeek.com/wp-content/uploads/2008/09/open-in-browser-save-as-dialog-150x150.png" alt="FF Save as.. dialog" title="FF Save as... dialog" width="150" height="120" class="size-thumbnail wp-image-128 alignright" /></a></p>
<p>It&#8217;s still experimental, so you need to register to install it, but it&#8217;s well worth it. Sometimes when you&#8217;re viewing images or ASCII files (like source code) online, you want them viewed in the browser, but the site forces you to download them. </p>
<p>One example any Google Images Surfer is aware of is the fact that images hosted on Blogger cannot be viewed in the browser. Very annoying &#8211; unless you have this extension installed. It adds an option to open files in the browser to the file download dialog.</p>
<p><br/></p>
<p><a class="top10src" href="https://addons.mozilla.org/en-US/firefox/addon/1956" target="_blank">Tabs Open Relative</a></p>
<p><em>This should not only be built into Firefox, it should be the default behavior.</em> </p>
<p>Causes new tabs to open next to the current tab, instead of launching after the last tab you have open. </p>
<p><br/></p>
<p><a class="top10src" href="https://addons.mozilla.org/en-US/firefox/addon/26" target="_blank">Download Statusbar</a></p>
<p>What&#8217;s more annoying than tabs opening a thousand pixels away? The Firefox download dialog. It&#8217;s big and too intrusive to keep open permanently, and I get annoyed when the download is done and it suddenly vanishes. Solution? Download to the desktop and don&#8217;t use the download dialog.</p>
<p>Another solution? Use this extension. In mini-mode (full-mode is too bloated IMO), it displays the number of files still in progress on the bottom-right of the browser, and a single click on this opens a little &#8220;drop up&#8221; menu that displays your downloads and their status. Hovering over the filename reveals all the info you need about that download. Double clicking the file opens it and removes it from the download list. </p>
<p>And the ctrl+Y default download dialog is still available and functions normally (if you want to use it).</p>
<p><br/></p>
<p><a class="top10src" href="http://labs.mozilla.com/2008/08/introducing-ubiquity/" target="_blank">Ubiquity</a><br />
<img src="http://biodegradablegeek.com/wp-content/uploads/2008/09/mozilla-labs-presents-ubiquity.png" alt="mozilla labs presents ubiquity Top 10 Firefox Extensions that Enhance Usability" title="mozilla-labs-presents-ubiquity" class="plainimg alignright size-medium wp-image-136" /></p>
<p>Ubiquity is to Firefox what <a href="http://blacktree.com/?quicksilver" target="_blank">Quicksilver</a> is to OS X, what <a href="http://do.davebsd.com/" target="_blank">Gnome Do</a> is to Linux. From its Wikipedia page: </p>
<blockquote><p>Ubiquity&#8217;s main goal is to take a disjointed web and bring everything the user needs to them. This is accomplished through a command-line-like interface which is based on natural language commands. These commands are supplied both by Mozilla and by individual users. Commands are written in Javascript and either directly typed into the command editor that comes with Ubiquity or subscribed to. Commands to which a user subscribes are automatically updated when the author updates the code.</p></blockquote>
<p>I won&#8217;t go in-depth about this because <a href="http://www.azarask.in/blog/post/ubiquity-in-depth/" target="_blank">Aza has done so already</a>.<a href="https://addons.mozilla.org/firefox/addon/722" target="_blank"><strong></strong></a><br />
<br/><br />
<br/><br/></p>
<p><a class="top10src" href="https://addons.mozilla.org/firefox/addon/722" target="_blank">NoScript</a> </p>
<p>This extension is initially unappealing because it seems to break most sites. What it does is disable Javascript (and by default, Flash) on any new sites you visit, until you explicitly teach NoScript that they&#8217;re trustworthy.<br />
<img src="http://biodegradablegeek.com/wp-content/uploads/2008/09/ugly-noscript-icon.jpg" alt="ugly noscript icon Top 10 Firefox Extensions that Enhance Usability" title="ugly-noscript-icon" class="alignright plainimg size-medium wp-image-137" /><br />
Besides nuisance and security reasons, one huge benefit is the fact that you can block/unblock specific domains per site. So you can enable JS on a site but keep Google Analytics or some annoying JS ads being loaded remotely, disabled.</p>
<p>I used NoScript on and off, but finally settled on making it permanent by changing some options to make it less annoying to me. These settings work good for my own browsing habits; YMMV.</p>
<ul>
<li>Stop auto-page reload &#8211; I prefer doing this manually.</li>
<li>Forbid everything <em>except</em> Flash and IFRAME &#8211; nspluginwrapper crashes Flash all the time anyway :P</li>
<li>Show Status bar icon (not label)</li>
<li>Place <em>blocked-scripts message</em> on the bottom instead of top</li>
<li>Hide message after 3 seconds &#8211; I don&#8217;t even need this. I&#8217;m aware that JS is off by default now</li>
<li>Allow local links &#8211; Good if you develop</li>
</ul>
<p>The main turn-off people have towards NoScript is the fact that you need to get used to unblocking sites you&#8217;ve been visiting hassle-free for years, but <strong>after a few days you&#8217;ll notice that, since you only need to allow a site once</strong> (permanently), nearly every site you visit on a regular basis will be whitelisted and will work as it always had. </p>
<p>My whitelist has hundreds of items, and I do view new sites on a daily basis, but in the past few days the only site I recall turning JS on for was InventiveLabs&#8217;, to see the <a href="http://www.inventivelabs.com.au/weblog" target="_blank">crazy js light-switch effect</a>.</p>
<p><br/></p>
<p><a class="top10src" href="https://addons.mozilla.org/en-US/firefox/addon/1306" target="_blank">Stealther</a></p>
<p>Stealther has plenty of uses, one of which is being able to quickly see what your site will look like for users with cookies disabled, but it&#8217;s not a very versatile <em>porn-mode</em>. A lot of sites require cookies to be enabled, including Google Images (to keep the filter option saved), but Stealther has be fine tuned. </p>
<p>Hiding your history can also be achieved by using ctrl+H, sorted by Last Visited, and just hitting DEL on the top few links (why can&#8217;t you ctrl/shift select?) you visited. It doesn&#8217;t remove everything, but removes enough. </p>
<p><br/></p>
<p><a class="top10src" href="https://addons.mozilla.org/en-US/firefox/addon/173" target="_blank">Gmail Notifier</a> </p>
<p><em>This is not the same as Google&#8217;s Gmail Notifier Toolbar.</em><br />
<img src="http://biodegradablegeek.com/wp-content/uploads/2008/09/gmail-icon.jpg" alt="gmail icon Top 10 Firefox Extensions that Enhance Usability" title="gmail-icon" class="alignright size-medium wp-image-135" /></p>
<p>I&#8217;ve tried a bunch of Gmail notifiers for browsers, Gnome, KDE, etc. Nothing compares to Firefox&#8217; Gmail Notifier. First, who only has 1 email address anymore? A notifier needs to allow multiple accounts. Second, I&#8217;d like to be notified of unread messages only until I actually visit my inbox and decide whether I want to read them or not. Many notifiers will continue to bug me until I mark the emails read or explicitly tell the notifier to stop.</p>
<p><br/></p>
<p><a class="top10src" href="https://addons.mozilla.org/en-US/firefox/addon/1865" target="_blank">Adblock Plus</a></p>
<p>I like ads. Well placed ads, not the Adsense box in the middle of an article, or sites that have more ads than content, like About.com. Ads are downplayed and taken for granted, but some are brilliant, and <a href="http://www.sciencedaily.com/releases/2007/05/070510123709.htm" target="_blank">they still work</a>, even on us geeks. But people hate them, and so we have Adblock.</p>
<p><img src="http://biodegradablegeek.com/wp-content/uploads/2008/09/logo-adblock-plus.png" alt="logo adblock plus Top 10 Firefox Extensions that Enhance Usability" title="logo-adblock-plus" class="plainimg alignright size-medium wp-image-134" /></p>
<p>I initially couldn&#8217;t stand this extension because it kept blocking legitimate images. That was way-back-when, and I was re-introduced to adblock when I picked up <a href="http://swiftweasel.sourceforge.net/">Swiftweasel</a>. Actually, I don&#8217;t know if re-introduced is the right word. I just happened to notice it was available and was too lazy to remove it.</p>
<p>Install it, set it on the easy-filter and forget about it. If curious, here is the difference between <a href="http://www.neowin.net/forum/index.php?showtopic=467681" target="_blank">Adblock vs Adblock Plus</a>.</p>
<p><br/></p>
<p><a class="top10src" href="https://addons.mozilla.org/en-US/firefox/addon/1887" target="_blank">TimeTracker</a></p>
<p>I have a bad habit of losing track of my time when browsing the web (I&#8217;m literally addicted to the Internet). This extension helps shed light on this fact. . It keeps track of how long you&#8217;ve been using <del>wasting your life</del> browsing the web. </p>
<p>Has a useful filter option to disregard specific sites (i.e., editing your router settings, doing job related work, etc). However, in practice, I usually forget I have it installed and don&#8217;t notice it. What I really want is a timer that will alert me every N minutes I&#8217;m viewing a site. So if I&#8217;m on Wikipedia for more than 10 minutes, it&#8217;ll bring me back to Earth and make me realize that I should be working instead of holding ctrl and clicking every in-site link on the Wikipedia page.</p>
<p>The extension is actively being developed, and a lot of nice features are planned (<a href="http://forums.mozillazine.org/viewtopic.php?t=370288" target="_blank">see this thread</a>).<br />
<br/></p>
<p><em>(Honorable mention) </em><br />
<img src="http://biodegradablegeek.com/wp-content/uploads/2008/09/vim-super-cleaner-mr-sparkle.png" alt="vim super cleaner mr sparkle Top 10 Firefox Extensions that Enhance Usability" title="vim-super-cleaner-mr-sparkle" class="alignleft size-full plainimg wp-image-139" /><br />
<a class="top10src" href="http://vimperator.mozdev.org/" target="_blank">Vimperator</a></p>
<p>Vimperator is amazing. You know those crazy ideas you get sometimes that you think are brilliant in a humorous, &#8220;if only,&#8221; sarcastic, sort of way, like &#8220;Why can&#8217;t everything in life have a vim-like interface and bindings?&#8221; &#8212; yeah, that&#8217;s exactly what Vimperator does with Firefox. </p>
<p>Opera users may check out <a href="http://www.calmar.ws/opera/">this page</a>.</p>
<p><br/><br />
<br/></p>
<h2>What Firefox extensions do <strong>you</strong> recommend?</h2>
<p><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://biodegradablegeek.com/2008/09/firefox-extensions/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Spy on your Enemies and Loved Ones for Fun and Profit</title>
		<link>http://biodegradablegeek.com/2008/09/spy-on-your-enemies-and-loved-ones-for-fun-and-profit/</link>
		<comments>http://biodegradablegeek.com/2008/09/spy-on-your-enemies-and-loved-ones-for-fun-and-profit/#comments</comments>
		<pubDate>Wed, 10 Sep 2008 17:05:52 +0000</pubDate>
		<dc:creator>Isam</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[keylogger]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[rootkit]]></category>
		<category><![CDATA[spyware]]></category>
		<category><![CDATA[win32 api]]></category>

		<guid isPermaLink="false">http://biodegradablegeek.com/?p=101</guid>
		<description><![CDATA[The following is a stealthy keylogger I wrote in C a few years ago called LogThatShit (LTS). It was written on and for Windows XP, and probably works on Vista, but User Account Access (UAC) might prompt the user for a password. It began as a complete Remote Administration Tool (RAT) named Overdose. I realized [...]]]></description>
			<content:encoded><![CDATA[<p>The following is a stealthy keylogger I wrote in C a few years ago called <strong><a href="http://code.biodegradablegeek.com/LogThatShit/" target="_blank">LogThatShit</a> <a href="http://code.biodegradablegeek.com/LogThatShit/" target="_blank">(LTS)</a></strong>. It was written on and for Windows XP, and probably works on Vista, but User Account Access (UAC) might prompt the <em>user</em> for a password. It began as a complete Remote Administration Tool (RAT) named Overdose. I realized that the keylogger is the most important part of the RAT and decided to branch that off into a separate project.</p>
<p>As of 09/09/08, LTS remains undetectable by anti-virus software. It bypassed the <a href="http://en.wikipedia.org/wiki/Heuristic_analysis">heuristic analysis engines</a> of its time, but the more advanced ones today might pick it up.</p>
<p>I am releasing the source code under the <a href="http://www.gnu.org/licenses/gpl.txt">GPL license</a>, with no warranty whatsoever, <strong>for educational purposes only</strong>. I don&#8217;t use it, and I don&#8217;t suggest you use it. Usage might be illegal where you live, if not just unethical. I will not compile/send out any binaries. I don&#8217;t even know if it&#8217;ll compile out of the box.</p>
<p style="text-align: left;">Feature set <em>(This was written a long time before the app was complete, and was never updated)</em></p>
<p style="text-align: left;"><strong>A key stroke logger for Windows 9X/NT/2K/XP</strong></p>
<ul>
<li>Hijacks a process, meaning it will not show up on the task manager.</li>
<li>Bypasses heuristics engines.</li>
<li>Starts up automatically on boot. Does not show up in msconfig.</li>
<li>Logs OS, timestamp, Windows username, and the title and path of the window that currently has focus.</li>
<li>Can be updated or removed from the victim&#8217;s computer remotely.</li>
<li>Ability to download and and launch an executable silently from an FTP site.</li>
<li>Does not show up on the task manager on both 9X and NT platforms.</li>
<li>CPU and memory usage do not increase. No noticeable performance or memory hit.</li>
</ul>
<p><strong>Geeky Details:<br />
</strong></p>
<ul>
<li> Written in ANSI C89</li>
<li>Developed on XP SP1. Tested for Windows 2000 and XP SP2. Code includes some windows 9X stuff, but it was winged and never tested.</li>
<li>Uses a system-wide hook (WH_KEYBOARD).</li>
<li>Editor used was gvim (win32) with no plugins and mappings, but with some custom commands added to Windows&#8217; right click context menus, and a bunch of batch (.bat) and Makefiles.</li>
<li>Compiled using GNU make and other ported utilities.</li>
</ul>
<p><strong>The following was somewhat of a list of things I never got around to doing: </strong></p>
<ul>
<li>TODO: Need thorough testing on 9X</li>
<li> TODO: Restart feature</li>
<li> TODO: Change INFINITE to 1000ms</li>
<li> TODO: Don&#8217;t use general permissions on mappings / mutex.</li>
<li> TODO: Load self into memory and poll for presence, rewrite files if not available (persistence mode).</li>
</ul>
<p><strong>Technical:<br />
</strong>The following is written off the top of my head. When executed, the keylogger may display a customized error message to fool the victim into thinking the program is simply broken or outdated. This is to deter suspicion that the program is malicious, which is the reaction most people have when nothing happens as they sit there trying to open an application.</p>
<p>The logger than copies itself to the SYSTEM32 folder (name is set in the <a href="http://code.biodegradablegeek.com/LogThatShit/Release/LogThatShit.ini" target="_blank">ini config file</a>) and adds itself to system startup. It uses several methods to do this, depending on the OS, but the preferred method is to register itself as an ActiveX object. This hides it deep in the registry, under a unique key, and keeps it out of the msconfig -&gt; startup tab. It also keeps it out of most apps that display programs that launch on system startup.. or at least it did at the time. I think <a href="http://www.merijn.org/programs.php" target="_blank">HijackThis</a> and its ilk have caught up now.</p>
<p>When configured, the &#8216;Stub&#8217; (EXE file) is appended with two DLL files; Hook and Injection. At this point, the stub injects a DLL (injection.dll) into explorer.exe (it also looks for the default browser to use as a backup). This is called <a href="http://en.wikipedia.org/wiki/DLL_injection" target="_blank">DLL injection</a>, and is used to bypass firewalls that only allow trusted programs access to the Internet, else the firewall will give a &#8220;notepad2.exe wants to access the Internet. Are you sure you want to allow this?&#8221; warning.</p>
<p>Nowadays, firewalls will prompt the user that a program has been altered or has loaded new DLLs (especially if they aren&#8217;t in the same folder as the application), but nearly every user will just click &#8220;ALLOW&#8221; without caring &#8211; especially when the application in question is Explorer.exe or Firefox.exe.This also means the user will not notice much in the process manager (ctrl+alt+delete).</p>
<p>Stub remains open but idle; Closing it will unload the DLLs. Most of the work now is done inside Hook.dll. Keys are intercepted at a low level, logged, and then sent where they&#8217;re supposed to go. This is better than other loggers that just poll for keys, since it is very efficient and will not cause a memory/performance hit.</p>
<p>The logfile will store the title and file path of the application that has focus, and every keyboard key sent to that application. Capslock, backspace, enter, tab, shift, &#8220;special keys&#8221; and so forth are also logged and labeled. I.e., Shift might be [LSHIFT] or [RSHIFT]. All timestamped.</p>
<p>An example would be:</p>
<p><em>Biodegradable Geek &gt; Login &#8211; Wordpress &#8211; Firefox (c:programsfirefoxfirefox.exe)<br />
</em><em>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
[04:39:93] [RSHIFT]Isam[TAB]password123[ENTER]<br />
</em></p>
<p>There&#8217;s a few more features and technical details. <strong>View the source below:</strong></p>
<pre>// This software file (the "File") is distributed under the terms of the
// GNU General Public License Version 3, (the "License"). You may use,
// redistribute and/or modify this File in accordance with the terms and
// conditions of the License, a copy of which is available along with the
// File in the license.txt file or by writing to
//  Free Software Foundation, Inc.,
//  59 Temple Place,
//  Suite 330, Boston, MA, 02111-1307
//
//  or on the Internet at http://www.gnu.org/licenses/gpl.txt.

// THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND. THE AUTHOR
// DOES NOT TAKE ANY RESPONSIBILITY FOR ANY DAMAGE OR LEGAL ISSUES YOU MAY
// FACE WHEN USING THIS APPLICATION. PLEASE NOTE THAT LTS WAS WRITTEN AND
// RELEASED FOR *EDUCATIONAL* PURPOSES ONLY AND IS NOT INTENDED TO BE USED
// FOR ANYTHING THAT MAY BE AGAINST THE LAW WHERE YOU LIVE. IF YOU DO NOT
// WANT THAT RESPONSIBILITY, PLEASE DONT COMPILE OR USE THIS APPLICATION.

<strong>View the source here: <a href="http://code.biodegradablegeek.com/LogThatShit/" target="_blank">http://code.biodegradablegeek.com/LogThatShit/</a>

</strong></pre>
]]></content:encoded>
			<wfw:commentRss>http://biodegradablegeek.com/2008/09/spy-on-your-enemies-and-loved-ones-for-fun-and-profit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Easily Installing Vim 7.2 From Source</title>
		<link>http://biodegradablegeek.com/2008/08/easily-installing-vim-72-edge-from-source/</link>
		<comments>http://biodegradablegeek.com/2008/08/easily-installing-vim-72-edge-from-source/#comments</comments>
		<pubDate>Sun, 24 Aug 2008 22:01:45 +0000</pubDate>
		<dc:creator>Isam</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Workarounds]]></category>
		<category><![CDATA[editors]]></category>
		<category><![CDATA[gvim]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[installing]]></category>
		<category><![CDATA[vi]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://biodegradablegeek.com/?p=143</guid>
		<description><![CDATA[Vim 7.2 beta was released last month, and 7.2 is now stable. First check to see if your distro offers a package, and if not, follow these simple instructions on how to install it from source, from the vim7.2 subversion branch.

cd /tmp/
svn co https://vim.svn.sourceforge.net/svnroot/vim/branches/vim7.2
cd vim7.2/
./configure --with-features=huge --enable-gui=gnome2 --enable-cscope --enable-pythoninterp
make

Now you can use sudo make install [...]]]></description>
			<content:encoded><![CDATA[<p>Vim 7.2 beta was released last month, and 7.2 is now stable. First check to see if your distro offers a package, and if not, follow these simple instructions on how to install it from source, from the vim7.2 subversion branch.</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">cd /tmp/
svn co https://vim.svn.sourceforge.net/svnroot/vim/branches/vim7.2
cd vim7.2/
./configure --with-features=huge --enable-gui=gnome2 --enable-cscope --enable-pythoninterp
make</pre></div></div>

<p>Now you can use <strong>sudo make install</strong> and you&#8217;re done,&#8230;<strong>but</strong></p>
<p>I suggest using <em>checkinstall</em> (<strong>sudo apt-get install checkinstall</strong>) to keep track of the installed files, create a package, and have the option of easily removing whatever you installed easily (<strong>i.e., dpkg -r vim7.2</strong>).</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">sudo checkinstall -D</pre></div></div>

<p>If the above command doesn&#8217;t work, you aren&#8217;t alone. It recently began giving me these errors:</p>
<blockquote><p>
cp vim /usr/local/bin/vim<br />
chmod 755 /usr/local/bin/vim: setting permissions for `/usr/local/bin/vim&#8217;: No such file or directory<br />
make[1]: Leaving directory<br />
&#8230; etc &#8230;<br />
****  Installation failed. Aborting package creation.
</p></blockquote>
<p>I dug up some info about the problem, along with a solution:</p>
<blockquote><p>
There seems to be a bug in the filesystem translation code which has been<br />
biting people using newer versions of glibc found in most recent linux<br />
distributions. It is being worked on. If you find weird install errors<br />
when running checkinstall but your software installs fine without<br />
checkinstall then you can work around the bug by disabling the fs<br />
translation code and forcing checkinstall to install the package. Use the<br />
&#8211;fstrans=no and &#8211;install=yes command line options:</p>
<p>checkinstall &lt;options&gt; &#8211;fstrans=no &#8211;install=yes &lt;install_command&gt;
</p></blockquote>
<p><strong>Source:</strong> <a href="http://oclug.on.ca/archives/oclug/2004-May/038916.html" target="_blank">http://oclug.on.ca/archives/oclug/2004-May/038916.html</a></p>
<p>From the man page:</p>
<blockquote><p>
<strong>&#8211;install</strong> Toggle installation of the created package.<br />
<strong>&#8211;fstrans</strong> Enable/disable filesystem translation. Filesystem translation<br />
enabled causes the install to proceed in a  temporary  directory, thus not actually touching your system.
</p></blockquote>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">sudo checkinstall --fstrans=no --install=yes</pre></div></div>

<p>You can also have checkinstall create a package by passing in one of these flags:</p>
<blockquote><p>
<strong>&#8211;type</strong>  Choose packaging system. Can be one of ’slackware’,  ’debian’ or ’rpm’.<br />
<strong>-D </strong>       Create a Debian package.<br />
<strong>-R</strong>        Create a RPM package.<br />
<strong>-S</strong>        Create a Slackware Package.
</p></blockquote>
<p>For example, to create a Debian package, I would do this:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">sudo checkinstall --fstrans=no --install=yes -D:</pre></div></div>

<blockquote><p>
Done. The new package has been installed and saved to<br />
/home/mr.Gvim/vim7.2/vim7.2_20080824_amd64.deb
</p></blockquote>
<p>To see the changes from 7.1, use <strong>:help version-7.2</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://biodegradablegeek.com/2008/08/easily-installing-vim-72-edge-from-source/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Has vim/rails.vim been crashing lately? Here&#8217;s why.</title>
		<link>http://biodegradablegeek.com/2008/08/has-vimrailsvim-been-crashing-lately-heres-why/</link>
		<comments>http://biodegradablegeek.com/2008/08/has-vimrailsvim-been-crashing-lately-heres-why/#comments</comments>
		<pubDate>Sun, 03 Aug 2008 02:40:21 +0000</pubDate>
		<dc:creator>Isam</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Workarounds]]></category>
		<category><![CDATA[gvim]]></category>
		<category><![CDATA[rails.vim]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://biodegradablegeek.com/?p=136</guid>
		<description><![CDATA[
If you are experiencing segmentation faults with vim and rails.vim, it may be due to this bug, which appeared after 1.7.127, but has been resolved in 1.7.147 (patch log).
To check if your installation has this bug, type the following (cred goes to Ralph) in vim: :r ~fo&#60;tab&#62; (’fo’ being the start of a username present [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://biodegradablegeek.com/wp-content/uploads/2008/08/zomgbugnoez1.gif" alt="zomgbugnoez1 Has vim/rails.vim been crashing lately? Heres why." title="zomgbugnoez" width="300" height="213" class="alignnone plainimg size-full wp-image-137" /></p>
<p>If you are experiencing segmentation faults with vim and rails.vim, it may be due to <a href="https://bugs.launchpad.net/ubuntu/+source/vim/+bug/219546">this bug</a>, which appeared after 1.7.127, but has been resolved in 1.7.147 (<a href="ftp://ftp.vim.org/pub/vim/patches/7.1/README">patch log</a>).</p>
<p>To check if your installation has this bug, type the following (cred goes to <a href="https://bugs.launchpad.net/ubuntu/+source/vim/+bug/219546/comments/21">Ralph</a>) in vim: <strong>:r ~fo&lt;tab&gt;</strong> (’fo’ being the start of a username present on the system, i.e., fo for foo, or kirb for kirby). <em>This does not require having rails.vim installed.</em></p>
<p>You can check whether your distro has updated vim, or install vim from source (<a href="http://blog.dotkam.com/2008/08/02/make-railsvim-work-compile-vim-from-sources/">see this post on how to do that</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://biodegradablegeek.com/2008/08/has-vimrailsvim-been-crashing-lately-heres-why/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Got API? Instantly Search API Documentation</title>
		<link>http://biodegradablegeek.com/2008/06/got-api-instantly-search-api-documentation/</link>
		<comments>http://biodegradablegeek.com/2008/06/got-api-instantly-search-api-documentation/#comments</comments>
		<pubDate>Sun, 01 Jun 2008 07:21:04 +0000</pubDate>
		<dc:creator>Isam</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://biodegradablegeek.com/2008/06/01/got-api-instantly-search-api-documentation/</guid>
		<description><![CDATA[gotAPI.com does an excellent job congregating API documentation for numerous programming languages under an AJAX interface. No more bulging neck veins or fulmination when you can&#8217;t remember the order of those pesky arguments.
No support for your favorite language? Contribute.
You can add a gotAPI Search Widget to your site: http://www.gotapi.com/widgets/index.html
See Ruby/Rails widget below (requires Javascript). Still [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.gotapi.com/">gotAPI.com</a> does an excellent job congregating API documentation for numerous programming languages under an AJAX interface. No more bulging neck veins or fulmination when you can&#8217;t remember the order of those pesky <a href="http://project.ioni.st/post/790">arguments</a>.</p>
<p>No support for your favorite language? <a href="http://www.gotapi.com/contribute/index.html">Contribute</a>.</p>
<p>You can add a gotAPI Search Widget to your site: <a href="http://www.gotapi.com/widgets/index.html">http://www.gotapi.com/widgets/index.html</a><br />
See Ruby/Rails widget below (requires Javascript). Still in beta and might have UI issues, but it&#8217;s functional. Try typing <em>map</em> or <em>validates</em> and hitting enter.</p>
<p><!-- gotAPI.com search widget v2 begin --></p>
<div><!-- 	.gaMenu{border:1px solid #505050;background-color:#FAFAFA;padding:0px 5px 0px 5px;} 	.gaHeaderRow{font:bold 8pt Arial;color:#359155;border-top:1px solid #C0C0C0;width:250px;} 	.gaRegularRow,.gaFooterRow{font:8pt Arial;cursor:pointer;} 	.gaSelectedRow{font:8pt Arial;background-color:#c1e0e6;cursor:pointer;} --><script type="text/javascript"><!--
	gaMod='module_rubyrails.js';gaTitle='Ruby / Rails';updateWhenLoaded=false;
	var gaL=false;function gaInit(){if(gaL)return;gaL=true;var s=document.createElement('script');
	s.type='text/javascript';s.src='http://www.gotapi.com/widgets/compiled/c1_module_rubyrails.js.jsz';s.defer='defer';s.defered='yes';
	document.getElementById('gaInfo').parentNode.appendChild(s)}function gaSearching(){
	document.getElementById('gaWait').style.display='';updateWhenLoaded=true;
	document.getElementById('gaInfo').style.display='none'}
// --></script></p>
<div style="font:bold 10pt Arial">Quick Ruby / Rails lookup</div>
<input id="gaSearch" onkeydown="gaSearching()" size="20" />
<div id="gaInfo" style="font:7pt Arial">powered by <a style="padding:0px" href="http://www.gotapi.com">gotAPI.com</a></div>
<div id="gaWait" style="font:7pt Arial;display:none">Searching&#8230;</div>
</div>
<p><!-- gotAPI.com search widget v2 end --></p>
]]></content:encoded>
			<wfw:commentRss>http://biodegradablegeek.com/2008/06/got-api-instantly-search-api-documentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GitHub Now Open to the Public</title>
		<link>http://biodegradablegeek.com/2008/04/github-now-open-to-the-public/</link>
		<comments>http://biodegradablegeek.com/2008/04/github-now-open-to-the-public/#comments</comments>
		<pubDate>Sun, 13 Apr 2008 15:45:45 +0000</pubDate>
		<dc:creator>Isam</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://biodegradablegeek.com/2008/04/13/github-now-open-to-the-public/</guid>
		<description><![CDATA[GitHub.com, the &#8220;easiest (and prettiest)&#8221; version control system, is now open to the public. It&#8217;s free for Open Source programs (albeit limited to 100MB of space).
If you&#8217;re not sure what git (or Revision Control) is, here are some resources:
Wikipedia on Revision Control
(excerpt) &#8220;Revision control (also known as version control (system) (VCS), source control or (source) [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://github.com/">GitHub.com</a>, the &#8220;easiest (and prettiest)&#8221; version control system, is now open to the public. It&#8217;s free for Open Source programs (albeit limited to 100MB of space).</p>
<p>If you&#8217;re not sure what git (or Revision Control) is, here are some resources:<br />
<a href="http://en.wikipedia.org/wiki/Revision_control">Wikipedia on Revision Control</a></p>
<p><em>(excerpt)</em> &#8220;Revision control (also known as version control (system) (VCS), source control or (source) code management (SCM)) is the management of multiple revisions of the same unit of information. It is most commonly used in engineering and software development to manage ongoing development of digital documents like application source code, art resources such as blueprints or electronic models, and other critical information that may be worked on by a team of people. Changes to these documents are usually identified by incrementing an associated number or letter code, termed the &#8216;revision number&#8217;, &#8216;revision level&#8217;, or simply &#8220;revision&#8221; and associated historically with the person making the change. A simple form of revision control, for example, has the initial issue of a drawing assigned the revision number &#8216;1&#8242;. When the first change is made, the revision number is incremented to &#8216;2&#8242; and so on.&#8221;</p>
<ul>
<li><a href="http://git.or.cz/index.html">Git&#8217;s official site</a> (<a href="http://git.or.cz/gitwiki/GitFaq">FAQ</a>)</li>
<li><a href="http://git.or.cz/gitwiki/GitSvnComparsion">Git&#8217;s Major Features Over Subversion</a></li>
<li><a href="http://www.advogato.org/person/apenwarr/diary/371.html">Git is the next Unix</a></li>
<li><a href="http://drnicwilliams.com/2008/02/03/using-git-within-a-team/"> Using Git within a project (forking around)</a></li>
<li><a href="http://git.or.cz/gitwiki/GitCheatSheet">Git Cheat Sheet</a></li>
<li>Git Alternatives: <a href="http://en.wikipedia.org/wiki/List_of_revision_control_software">A list of revision control software</a>. You&#8217;re probably familiar with SVN, CVS or BitKeeper.</li>
<li>GitHub Alternatives: <a href="http://gitorious.org/">Gitorious</a>, <a href="http://repo.or.cz/">repo.or.cz</a></li>
</ul>
<p><a href="http://www.youtube.com/watch?v=4XpnKHJAok8"><em>(A cocky)</em> Linus Torvalds talking on git</a>:<br />
[youtube]4XpnKHJAok8[/youtube]</p>
<h2>Flame On!</h2>
<p>Subversion vs git vs <em>other</em>?<br />
<img src='http://biodegradablegeek.com/wp-content/uploads/2008/04/flamecontrolsystem1.jpg' alt='Flame Control System' title="GitHub Now Open to the Public" /></p>
]]></content:encoded>
			<wfw:commentRss>http://biodegradablegeek.com/2008/04/github-now-open-to-the-public/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
