<?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>Lojic Technologies Blog &#187; utility</title>
	<atom:link href="http://lojic.com/blog/tag/utility/feed/" rel="self" type="application/rss+xml" />
	<link>http://lojic.com/blog</link>
	<description></description>
	<lastBuildDate>Fri, 25 Nov 2011 20:12:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Setup shoulda and rcov for Rails 2.2.2</title>
		<link>http://lojic.com/blog/2009/02/26/setup-shoulda-and-rcov-for-rails-222/</link>
		<comments>http://lojic.com/blog/2009/02/26/setup-shoulda-and-rcov-for-rails-222/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 02:10:27 +0000</pubDate>
		<dc:creator>Brian Adkins</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rcov]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[shoulda]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://lojic.com/blog/?p=216</guid>
		<description><![CDATA[I had a few mis-configuration issues when setting up shoulda and rcov for a new Rails 2.2.2 project, so I thought I&#8217;d jot down a few notes (mini tutorial, quickstart) to help save others from burning time on what should be a simple task.
shoulda is a library build on Test::Unit that provides helpers, macros and [...]]]></description>
			<content:encoded><![CDATA[<p>I had a few mis-configuration issues when setting up shoulda and rcov for a new Rails 2.2.2 project, so I thought I&#8217;d jot down a few notes (mini tutorial, quickstart) to help save others from burning time on what should be a simple task.</p>
<p><a href="http://thoughtbot.com/projects/shoulda/">shoulda</a> is a library build on Test::Unit that provides helpers, macros and assertions to make testing easier. </p>
<p><a href="http://eigenclass.org/hiki/rcov">rcov</a> is a code coverage tool for Ruby.</p>
<p><strong>1. Install rcov</strong></p>
<pre>
sudo gem install rcov
</pre>
<p><strong>2. Install shoulda</strong></p>
<pre>
sudo gem install thoughtbot-shoulda --source=http://gems.github.com
</pre>
<p><strong>3. Create your Rails project</strong></p>
<pre>
rails myapp
</pre>
<p><strong>4. Modify myapp/Rakefile</strong></p>
<pre>
require(File.join(File.dirname(__FILE__), 'config', 'boot'))
require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
require 'tasks/rails'
require 'shoulda/tasks'
namespace :test do
  desc 'Measures test coverage'
  task :coverage do
    rm_f "coverage"
    rm_f "coverage.data"
    rcov = "rcov -Itest --rails --aggregate coverage.data -T -x \" rubygems/*,/Library/Ruby/Site/*,gems/*,rcov*\""
    system("#{rcov} --no-html test/unit/*_test.rb test/unit/helpers/*_test.rb")
    system("#{rcov} --no-html test/functional/*_test.rb")
    system("#{rcov} --html test/integration/*_test.rb")
    system("open coverage/index.html") if PLATFORM['darwin']
  end
end
</pre>
<p><strong>5. Modify myapp/test/test_helper.rb</strong></p>
<pre>
...
# Add the following line
require 'shoulda/rails'   # require 'shoulda' also worked
...
</pre>
<p><strong>Conclusion</strong><br />
After you&#8217;ve written some shoulda tests, you should be able to use the following rake commands: </p>
<pre>
rake test
rake test:units
rake shoulda:list    # display specs from shoulda tests
rake test:coverage   # run rcov and display code coverage
</pre>
]]></content:encoded>
			<wfw:commentRss>http://lojic.com/blog/2009/02/26/setup-shoulda-and-rcov-for-rails-222/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Ubuntu Linux 8.04 &#8211; Wake on LAN</title>
		<link>http://lojic.com/blog/2008/09/03/ubuntu-804-linux-wake-on-lan/</link>
		<comments>http://lojic.com/blog/2008/09/03/ubuntu-804-linux-wake-on-lan/#comments</comments>
		<pubDate>Wed, 03 Sep 2008 05:23:57 +0000</pubDate>
		<dc:creator>Brian Adkins</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://lojic.com/blog/2008/09/03/ubuntu-804-wake-on-lan/</guid>
		<description><![CDATA[Now that I&#8217;ve switched to a Macbook Pro with OSX Leopard as my primary desktop, I&#8217;ve located my Ubuntu machine in another part of the house to be accessible to my children. Not wanting to walk to the room where it&#8217;s located just to flip the power switch, I researched how to get &#8220;wake on [...]]]></description>
			<content:encoded><![CDATA[<p>Now that I&#8217;ve switched to a Macbook Pro with OSX Leopard as my primary desktop, I&#8217;ve located my Ubuntu machine in another part of the house to be accessible to my children. Not wanting to walk to the room where it&#8217;s located just to flip the power switch, I researched how to get &#8220;wake on LAN&#8221; working, so I could power it up remotely.</p>
<p><strong>1.</strong> Enable the appropriate setting in your BIOS. Mine had something to do with wake on PCI device.</p>
<p><strong>2.</strong> Install ethtool if you don&#8217;t already have it.</p>
<pre>
sudo apt-get install ethtool
cd /etc/init.d
sudo vim wakeonlanconfig
</pre>
<p>Add the following lines to that file:</p>
<pre>
#!/bin/bash
ethtool -s eth0 wol g
</pre>
<p>Install the script:</p>
<pre>
sudo update-rc.d -f wakeonlanconfig defaults
</pre>
<p>Run the script:</p>
<pre>
sudo /etc/init.d/wakeonlanconfig
</pre>
<p><strong>3.</strong> Keep the network interface alive after shut down.</p>
<pre>
sudo vim /etc/init.d/halt
</pre>
<p>Change the following line:</p>
<pre>
halt -d -f -i $poweroff $hddown
</pre>
<p>to the following line (i.e. remove the -i)</p>
<pre>
halt -d -f $poweroff $hddown
</pre>
<p><strong>4.</strong> Get the MAC address</p>
<pre>
ifconfig | grep HW
</pre>
<p><strong>5.</strong> Send the magic packet via the following Ruby program:</p>
<pre>
require 'socket'
mac_addr = "x21x53x39xB3x90x42"
s = UDPSocket.new
s.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, 1)
s.send("xff"*6 + mac_addr*16, Socket::SO_BROADCAST, '10.0.0.255', 7)
</pre>
]]></content:encoded>
			<wfw:commentRss>http://lojic.com/blog/2008/09/03/ubuntu-804-linux-wake-on-lan/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Automatically Delete Unwanted Cookies in Firefox</title>
		<link>http://lojic.com/blog/2008/01/26/automatically-delete-unwanted-cookies-in-firefox/</link>
		<comments>http://lojic.com/blog/2008/01/26/automatically-delete-unwanted-cookies-in-firefox/#comments</comments>
		<pubDate>Sat, 26 Jan 2008 18:06:26 +0000</pubDate>
		<dc:creator>Brian Adkins</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://lojic.com/blog/2008/01/26/automatically-delete-unwanted-cookies-in-firefox/</guid>
		<description><![CDATA[I prefer to not have cookies stored in my browser, but it&#8217;s impractical to not store any cookies since this would require repeatedly logging in to authenticated sites that I frequently use. A simple solution in Firefox is the following:
From the Edit menu, choose Preferences and then click the Privacy tab. You should see a [...]]]></description>
			<content:encoded><![CDATA[<p>I prefer to not have cookies stored in my browser, but it&#8217;s impractical to not store any cookies since this would require repeatedly logging in to authenticated sites that I frequently use. A simple solution in Firefox is the following:</p>
<p>From the <span style="text-decoration: underline;">E</span>dit menu, choose <span style="text-decoration: underline;">P</span>references and then click the Privacy tab. You should see a dialog similar to the following one:</p>
<p><img src='http://lojic.com/blog/wp-content/uploads/2008/01/firefox1.png' alt='firefox1.png' /></p>
<p>Check the &#8220;Accept cookies from sites&#8221; checkbox. For the &#8220;Keep until&#8221; setting, select &#8220;I close Firefox&#8221;. The latter is the key &#8211; it will erase all cookies from Firefox whenever you close the program. Of course, we don&#8217;t want to erase <em>all</em> the cookies, so click the &#8220;Exceptions&#8230;&#8221; button on the right and you&#8217;ll see a dialog similar to the following:</p>
<p><img src='http://lojic.com/blog/wp-content/uploads/2008/01/firefox2.png' alt='firefox2.png' /></p>
<p>Just type the name of the web site you want to allow in the text box and click the &#8220;Allow&#8221; button, and Firefox will add it to the exception list so it won&#8217;t be deleted when you close Firefox. You can add a full URL such as www.MySite.com, or just the domain name MySite.com to allow cookies for any host in that domain. You an also add sites you want to disallow any cookies from by clicking the &#8220;Block&#8221; button.</p>
<p>I have about 30 sites that I allow Firefox to store cookies for, but this technique has helped me avoid accumulating tons of unwanted cookies in Firefox. I hope it&#8217;s helpful for you.</p>
]]></content:encoded>
			<wfw:commentRss>http://lojic.com/blog/2008/01/26/automatically-delete-unwanted-cookies-in-firefox/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Use vimdiff to display subversion diffs</title>
		<link>http://lojic.com/blog/2007/11/27/use-vimdiff-to-display-subversion-diffs/</link>
		<comments>http://lojic.com/blog/2007/11/27/use-vimdiff-to-display-subversion-diffs/#comments</comments>
		<pubDate>Tue, 27 Nov 2007 15:14:38 +0000</pubDate>
		<dc:creator>Brian Adkins</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://lojic.com/blog/2007/11/27/use-vimdiff-to-display-subversion-diffs/</guid>
		<description><![CDATA[I prefer using vimdiff or gvimdiff to view differences between files. When researching ways to allow using vimdiff to view subversion differences, I came across this article.
The bottom line is that subversion passes the two relevant arguments as the 6th and 7th arguments, so the following shell script wrapper does the trick:

#!/bin/sh
/usr/bin/gvimdiff ${6} ${7}

Save the [...]]]></description>
			<content:encoded><![CDATA[<p>I prefer using vimdiff or gvimdiff to view differences between files. When researching ways to allow using vimdiff to view subversion differences, I came across <a href="http://blog.tplus1.com/index.php/2007/08/29/how-to-use-vimdiff-as-the-subversion-diff-tool/">this article</a>.</p>
<p>The bottom line is that subversion passes the two relevant arguments as the 6th and 7th arguments, so the following shell script wrapper does the trick:<br />
<code><br />
#!/bin/sh<br />
/usr/bin/gvimdiff ${6} ${7}<br />
</code></p>
<p>Save the script as gvimdiff_wrapper.sh, make it executable and accessible on your path. Then modify $HOME/.subversion/config to have the following line:<br />
<code><br />
diff-cmd = gvimdiff_wrapper.sh<br />
</code></p>
<p>That will allow you to use gvimdiff to display the diff generated by <code>svn diff my_file.txt</code></p>
]]></content:encoded>
			<wfw:commentRss>http://lojic.com/blog/2007/11/27/use-vimdiff-to-display-subversion-diffs/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>del.icio.us Tag Bundling</title>
		<link>http://lojic.com/blog/2007/11/03/delicious-tag-bundling/</link>
		<comments>http://lojic.com/blog/2007/11/03/delicious-tag-bundling/#comments</comments>
		<pubDate>Sun, 04 Nov 2007 01:47:24 +0000</pubDate>
		<dc:creator>Brian Adkins</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://lojic.com/blog/2007/11/03/delicious-tag-bundling/</guid>
		<description><![CDATA[I&#8217;ve written about del.icio.us several times before (use the search box to find the articles). I&#8217;ve been using the service for quite a while and still consider it to be one of the most valuable web services I use.
I just discovered the tag bundling feature from this article and tried it out. Tag bundling, as [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve written about <a href="http://del.icio.us">del.icio.us</a> several times before (use the search box to find the articles). I&#8217;ve been using the service for quite a while and still consider it to be one of the most valuable web services I use.</p>
<p>I just discovered the tag bundling feature from <a href="http://webworkerdaily.com/2007/11/01/become-a-delicious-power-user/trackback/">this article</a> and tried it out. Tag bundling, as you might expect, allows you to group your tags. For example, my first bundle was &#8220;people&#8221;, so now I can see all my people tags in one group. I&#8217;ll be adding more bundles soon.</p>
<p>If you&#8217;re not using <a href="http://del.icio.us">del.icio.us</a>, you should really check it out. And if you, are and don&#8217;t know about tag bundling, give it a shot.</p>
<p><a href="http://del.icio.us">del.icio.us</a> makes it easy to share tags &#8211; for example, here&#8217;s a link for my <a href="http://del.icio.us/lojic/Ruby">bookmarks on the Ruby programming language</a>. I haven&#8217;t discovered a similar way for sharing bundles, so if you know, please leave a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://lojic.com/blog/2007/11/03/delicious-tag-bundling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Greasemonkey Script for Netflix Half Star Ratings</title>
		<link>http://lojic.com/blog/2007/08/27/greasemonkey-script-for-netflix-half-star-ratings/</link>
		<comments>http://lojic.com/blog/2007/08/27/greasemonkey-script-for-netflix-half-star-ratings/#comments</comments>
		<pubDate>Mon, 27 Aug 2007 21:38:50 +0000</pubDate>
		<dc:creator>Brian Adkins</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[movies]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://lojic.com/blog/2007/08/27/greasemonkey-script-for-netflix-half-star-ratings/</guid>
		<description><![CDATA[I wrote an article back in May about a way to give half star ratings on Netflix. It had the advantage of working in any browser and not requiring any software installation, but it wasn&#8217;t very user friendly.
Since then, I&#8217;ve been doing a lot of JavaScript coding, so I thought I&#8217;d give Greasemonkey a try. [...]]]></description>
			<content:encoded><![CDATA[<p>I wrote an article back in May about a way to give <a href="http://lojic.com/blog/2007/05/02/half-star-ratings-on-netflix/">half star ratings</a> on Netflix. It had the advantage of working in any browser and not requiring any software installation, but it wasn&#8217;t very user friendly.</p>
<p>Since then, I&#8217;ve been doing a lot of JavaScript coding, so I thought I&#8217;d give <a href="https://addons.mozilla.org/en-US/firefox/addon/748">Greasemonkey</a> a try. I found a script <a href="http://userscripts.org/scripts/review/8118">here</a> to give half-star ratings, but I didn&#8217;t care for the hover captions and JSLint pointed out a few issues, so I cleaned it up a little:</p>
<p><strong>Code</strong><br />
<code><br />
// ==UserScript==<br />
// @name          Netflix Half Stars<br />
// @description   allows half star user ratings on Netflix<br />
// @include       http://*netflix.com/*<br />
// ==/UserScript==<br />
// http://userscripts.org/scripts/review/8118<br />
// Modified by Brian Adkins</p>
<p>if (!unsafeWindow.sbHandler) { return; }</p>
<p>var sbHandler = unsafeWindow.sbHandler;<br />
sbHandler.sbOffsets = [8,18,27,37,46,56,65,75,84,94];</p>
<p>sbHandler.displayStrings[0.5] = ".5 stars";<br />
sbHandler.displayStrings[1.5] = "1.5 stars";<br />
sbHandler.displayStrings[2.5] = "2.5 stars";<br />
sbHandler.displayStrings[3.5] = "3.5 stars";<br />
sbHandler.displayStrings[4.5] = "4.5 stars";</p>
<p>sbHandler.sbImages[0.5] = new Image();<br />
sbHandler.sbImages[0.5].src = sbHandler.imageRoot+"stars_2_5.gif";</p>
<p>for(var i = 2; i < 11; i++) {<br />
  sbHandler.sbImages[i/2] = new Image();<br />
  sbHandler.sbImages[i/2].src = sbHandler.imageRoot + "stars_2_" +<br />
    (Math.floor(i/2)) + (i % 2 === 0 ? "0" : "5") + ".gif";<br />
}</p>
<p>sbHandler.getStarCount = function (evt) {<br />
  var x = unsafeWindow.getElementMouseCoordinate(evt, this.element);</p>
<p>  for(var ii = 0; ii < 10; ii++) {<br />
    if(x <= this.sbOffsets[ii]) { return (ii + 1) / 2; }<br />
  }</p>
<p>  return 0;<br />
};<br />
</code></p>
<p><strong>Installation</strong></p>
<p>Save the JavaScript code with .user.js extension e.g. netflix_halfstar.user.js and then open that file in Firefox and Greasemonkey should prompt you to install it.</p>
]]></content:encoded>
			<wfw:commentRss>http://lojic.com/blog/2007/08/27/greasemonkey-script-for-netflix-half-star-ratings/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Social Bookmarking</title>
		<link>http://lojic.com/blog/2007/08/07/social-bookmarking/</link>
		<comments>http://lojic.com/blog/2007/08/07/social-bookmarking/#comments</comments>
		<pubDate>Wed, 08 Aug 2007 01:34:35 +0000</pubDate>
		<dc:creator>Brian Adkins</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://lojic.com/blog/?p=103</guid>
		<description><![CDATA[Here&#8217;s a video that explains why using a site such as del.icio.us can be useful. I think they may have failed to mention that you can mark bookmarks as private on del.icio.us, so it&#8217;s not necessary to expose your bookmarks to the world. However, in my case, I only mark a small fraction as private.
I&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a video that explains why using a site such as <a href="http://del.icio.us">del.icio.us</a> can be useful. I think they may have failed to mention that you can mark bookmarks as private on del.icio.us, so it&#8217;s not necessary to expose your bookmarks to the world. However, in my case, I only mark a small fraction as private.</p>
<p>I&#8217;ve been using del.icio.us for quite some time. After I had been using it for a while, I realized that it had been a long time since I bookmarked something in my browser because I had developed a habit of bookmarking in del.icio.us. Most browsers force you into placing a bookmark into a hierarchical, or directory, structure, but on del.icio.us you can assign as many &#8220;tags&#8221; as you like to a particular bookmark so you can search for things more easily. del.icio.us also allows you to export your bookmarks so you aren&#8217;t at the mercy of a proprietary service.</p>
<p>Another thing that is handy is to subscribe to the del.icio.us feeds of your friends to be automatically notified when they bookmark something that may be of interest.</p>
<p><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/x66lV7GOcNU"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/x66lV7GOcNU" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://lojic.com/blog/2007/08/07/social-bookmarking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Surf Securely Using SSH</title>
		<link>http://lojic.com/blog/2007/08/02/surf-securely-using-ssh/</link>
		<comments>http://lojic.com/blog/2007/08/02/surf-securely-using-ssh/#comments</comments>
		<pubDate>Thu, 02 Aug 2007 05:28:15 +0000</pubDate>
		<dc:creator>Brian Adkins</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://lojic.com/blog/?p=98</guid>
		<description><![CDATA[This is so easy, you&#8217;re gonna love it! Thanks Tyler Pedersen.
Motivation
I&#8217;ve been using my laptop more frequently at wifi hotspots. Many web sites I visit encrypt traffic with SSL for authentication, but after that they send traffic in the clear which means the cookies that are used for authentication purposes are sent in the clear, [...]]]></description>
			<content:encoded><![CDATA[<p>This is <strong>so</strong> easy, you&#8217;re gonna love it! Thanks Tyler Pedersen.</p>
<p><strong>Motivation</strong></p>
<p>I&#8217;ve been using my laptop more frequently at wifi hotspots. Many web sites I visit encrypt traffic with SSL for authentication, but after that they send traffic in the clear which means the cookies that are used for authentication purposes are sent in the clear, so anyone with a sniffer within range of my laptop could easily intercept the traffic, steal my cookies and impersonate me on the web site. Not good! So, I went looking for a simple solution, and found a <a href="http://www.surfssl.com/?p=20">great article</a> about using ssh for this purpose. Ya gotta love open source software :)</p>
<p><strong>Prerequisites</strong></p>
<p>I&#8217;ll assume the following:</p>
<ol>
<li>You&#8217;ve used ssh before</li>
<li>You have access to a remote host running sshd</li>
</ol>
<p><strong>How To</strong></p>
<p>Issue the following command on your local computer:</p>
<p><code>ssh -Nf username@hostname.com -D 1080</code></p>
<p>replace username@hostname.com with the appropriate information. Look at the man page for ssh, or read the article linked above for an explanation of the options.</p>
<p>The next step is to configure Firefox to use the SOCKS proxy you setup with the above command. I&#8217;m using Firefox 2.0.0.6 on Ubuntu 7.04 Linux.</p>
<p><code>Edit | Preferences | Advanced | Settings</code></p>
<p>Pulls up the following dialog:</p>
<p><img src='http://lojic.com/blog/wp-content/uploads/2007/08/socks.png' alt='socks.png' /></p>
<p>Notice how I&#8217;ve switched from &#8220;Direct connection to the Internet&#8221; to &#8220;Manual proxy configuration&#8221;. I&#8217;ve also set the SOCKS Host to be &#8216;localhost&#8217; and the port to be &#8216;1080&#8242;.</p>
<p>I can now surf and have encrypted traffic between my local computer and the remote host I ssh&#8217;d to. The traffic between my remote host and the destination web site will be unencrypted, but hopefully that traffic is harder to sniff without being detected.</p>
<p>At this point, I tested it out and everything worked fine. I then killed my local ssh process and Firefox complained about the connection being reset, so I knew it was in fact sending data over the ssh tunnel.</p>
<p>The final step is optional, but if you want to avoid having the bad guys detect your DNS requests (or possibly redirect them &#8211; d&#8217;oh!), you can configure Firefox to route DNS requests through the proxy.</p>
<ol>
<li>Type <code>about:config</code> in the Firefox address bar.</li>
<li>Look for network.proxy.socks_remote_dns and set the value to true</li>
</ol>
<p>Is that easy or what? Thanks again Tyler.</p>
]]></content:encoded>
			<wfw:commentRss>http://lojic.com/blog/2007/08/02/surf-securely-using-ssh/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Reader</title>
		<link>http://lojic.com/blog/2007/07/30/google-reader/</link>
		<comments>http://lojic.com/blog/2007/07/30/google-reader/#comments</comments>
		<pubDate>Tue, 31 Jul 2007 04:41:56 +0000</pubDate>
		<dc:creator>Brian Adkins</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://lojic.com/blog/?p=96</guid>
		<description><![CDATA[I hate to promote Google given their trajectory to take over the world, but I just switched over to Google Reader for reading RSS feeds. I had accumulated over 60 RSS feeds, and it was becoming difficult for me to determine which feeds I should keep and which I should delete.
I was hoping for an [...]]]></description>
			<content:encoded><![CDATA[<p>I hate to promote Google given their trajectory to take over the world, but I just switched over to <a href="http://www.google.com/reader">Google Reader</a> for reading RSS feeds. I had accumulated over 60 RSS feeds, and it was becoming difficult for me to determine which feeds I should keep and which I should delete.</p>
<p>I was hoping for an <strong>automated tool that would keep track of which feeds are beneficial</strong> and Google Reader has exactly what I was looking for!</p>
<p>The trends feature will keep track of which articles I read from each feed and report on the total number and the percent. So, over time, I&#8217;ll be able to easily delete the feeds that have a low number and/or low percentage of read articles. If you decide to use Google Reader, you should be aware of some idiosyncrasies. When viewing in &#8220;Expanded view&#8221;, the default is to mark articles as read when you scroll past them which totally defeats the trends feature. You can turn that off in the settings.</p>
<p><code>settings | preferences | scroll tracking</code></p>
<p>I like using the &#8220;list view&#8221; instead which allows me to quickly view the titles. After I&#8217;ve read the articles I want to from a feed, I click &#8220;mark all as read&#8221; and Google Reader is smart enough to not count those in the &#8220;read&#8221; statistics.</p>
<p>If you&#8217;re already using a different RSS reader, you can easily import all your feeds via an opml file. I was using Liferea and had folders of feeds, and I had also renamed the feeds &#8211; the import to Google Reader kept track of all of that &#8211; nice.</p>
<p>Google Reader has a lot of other nice features such as keyboard shortcuts, tags, folders, etc., but once I discovered the trends feature, that was all I needed to see :)</p>
<p>I suppose the trends feature can be &#8220;unfair&#8221; though. Consider the following scenario:</p>
<ol>
<li>You have two feeds A and B</li>
<li>Each day each feed publishes 10 articles</li>
<li>The feeds overlap on 5 articles that are worth reading</li>
<li>Feed A has 1 unique article that you read</li>
<li>Feed B has 3 unique articles that you read</li>
</ol>
<p>If the feeds are read in alphabetical order, then you&#8217;ll read the 5 overlapped articles from Feed A along with the 1 unique article -> total = 6, or 60%. Then you&#8217;ll read the 3 unique articles from Feed B -> total = 3, or 30%. The stats will show Feed A as being twice as valuable when clearly Feed B is more valuable. I suppose to get good stats, I should read the feeds in random order, but that seems difficult to manage.</p>
<p><strong>UPDATE:</strong> ah, never mind. Simply view the folder that contains A &#038; B and you&#8217;ll see the union of their articles in chronological order &#8211; whoever gets the overlapped story first wins :)</p>
]]></content:encoded>
			<wfw:commentRss>http://lojic.com/blog/2007/07/30/google-reader/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adblock Plus</title>
		<link>http://lojic.com/blog/2007/07/23/adblock-plus/</link>
		<comments>http://lojic.com/blog/2007/07/23/adblock-plus/#comments</comments>
		<pubDate>Mon, 23 Jul 2007 17:29:16 +0000</pubDate>
		<dc:creator>Brian Adkins</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[advertising]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://lojic.com/blog/?p=92</guid>
		<description><![CDATA[Facebook.com just ran an ad that was quite offensive to me. I should&#8217;ve taken Scott Moonen&#8217;s advice from his blog earlier, but better late than never. He has simple instructions for installing Adblock on his blog. Check it out and get rid of ads!
]]></description>
			<content:encoded><![CDATA[<p>Facebook.com just ran an ad that was quite offensive to me. I should&#8217;ve taken <a href="http://truthadorned.org/">Scott Moonen&#8217;s</a> advice from his blog earlier, but better late than never. He has <a href="http://truthadorned.org/2007/04/13/blocking-ads/">simple instructions for installing Adblock</a> on his blog. Check it out and get rid of ads!</p>
]]></content:encoded>
			<wfw:commentRss>http://lojic.com/blog/2007/07/23/adblock-plus/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

