<?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>funkjedi &#187; Technology</title>
	<atom:link href="http://funkjedi.com/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://funkjedi.com</link>
	<description>Making government official breath harder than Darth Vader</description>
	<lastBuildDate>Fri, 23 Mar 2012 15:40:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Search using Geolocation data in MySQL</title>
		<link>http://funkjedi.com/technology/308-search-using-geolocation-data-in-mysql/</link>
		<comments>http://funkjedi.com/technology/308-search-using-geolocation-data-in-mysql/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 19:32:23 +0000</pubDate>
		<dc:creator>funkjedi</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://funkjedi.com/?p=308</guid>
		<description><![CDATA[One of the many things brought to the forefront by HTML5 is Geolocation. It&#8217;s easy enough to get someones geolocation data using HTML5 but what do you do with it once you have it? Ideally you&#8217;d like to search through some sort of database be it store locations, real estate listings or what have your. [...]]]></description>
			<content:encoded><![CDATA[<p>One of the many things brought to the forefront by HTML5 is Geolocation. It&#8217;s easy enough to get someones geolocation data using HTML5 but what do you do with it once you have it? Ideally you&#8217;d like to search through some sort of database be it store locations, real estate listings or what have your. This is where most people start to get tripped up.</p>
<p>There&#8217;s lots of different techniques for achieving this unfortunately they don&#8217;t seem to ever be explained very well as they relate to MySQL. Until now&#8230; dun dun dun dahhh.</p>
<p>The two most common technique are the Haversine formula and the <strong>Spherical Law of Cosines</strong>. The method I&#8217;ve chosen to use in my example is the Spherical Law of Cosines. The formula is a bit short and uses fewer mathematical functions.</p>
<p>The example is comprised of two parts. The first is the Spherical Law of Cosines. The second part is defining a search radius. Defining this search radius will significantly narrow the scope of our search. This is a good thing.</p>
<p>Alright enough chitchat. Here&#8217;s the sample MySQL query. It&#8217;s built in PHP below but can easily be converted to your language of preference.</p>
<p class="highlight">
Note: I&#8217;m Canadian so the example below is done using kilometers. If you want miles you&#8217;ll need to multiple <strong>$earths_radius</strong> and <strong>$surface_distance_coeffient</strong> by <strong>0.6214</strong> to convert them to miles.
</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Search parameters</span>
<span style="color: #000088;">$lat</span> <span style="color: #339933;">=</span> <span style="color:#800080;">45.411572</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$lng</span> <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color:#800080;">75.698194</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$radius</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">25</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Constants related to the surface of the Earth</span>
<span style="color: #000088;">$earths_radius</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">6371</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$surface_distance_coeffient</span> <span style="color: #339933;">=</span> <span style="color:#800080;">111.320</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Spherical Law of Cosines</span>
<span style="color: #000088;">$distance_formula</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$earths_radius</span> * ACOS( SIN(RADIANS(latitude)) * SIN(RADIANS(<span style="color: #006699; font-weight: bold;">$lat</span>)) + COS(RADIANS(longitude - <span style="color: #006699; font-weight: bold;">$lng</span>)) * COS(RADIANS(latitude)) * COS(RADIANS(<span style="color: #006699; font-weight: bold;">$lat</span>)) )&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Create a bounding box to reduce the scope of our search</span>
<span style="color: #000088;">$lng_b1</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$lng</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$radius</span> <span style="color: #339933;">/</span> <span style="color: #990000;">abs</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">cos</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">deg2rad</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$lat</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">*</span> <span style="color: #000088;">$surface_distance_coeffient</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$lng_b2</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$lng</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$radius</span> <span style="color: #339933;">/</span> <span style="color: #990000;">abs</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">cos</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">deg2rad</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$lat</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">*</span> <span style="color: #000088;">$surface_distance_coeffient</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$lat_b1</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$lat</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$radius</span> <span style="color: #339933;">/</span> <span style="color: #000088;">$surface_distance_coeffient</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$lat_b2</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$lat</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$radius</span> <span style="color: #339933;">/</span> <span style="color: #000088;">$surface_distance_coeffient</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Construct our sql statement</span>
<span style="color: #000088;">$sql</span> <span style="color: #339933;">=</span> <span style="color: #0000cc; font-style: italic;">&lt;&lt;&lt;SQL
SELECT *, ($distance_formula) AS distance
FROM listings
WHERE (latitude BETWEEN $lat_b1 AND $lat_b2) AND (longitude BETWEEN $lng_b1 AND $lng_b2)
HAVING distance &lt; $radius
ORDER BY distance ASC
SQL</span><span style="color: #339933;">;</span></pre></div></div>

<p>If your interested in digging deeper into the theory and math behind the Spherical Law of Cosines or the Haversine formula checkout the <a href="http://www.movable-type.co.uk/scripts/latlong.html">Movable Type Scrips</a> site they have tons of background information.</p>
]]></content:encoded>
			<wfw:commentRss>http://funkjedi.com/technology/308-search-using-geolocation-data-in-mysql/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to get Sencha Touch working on non-touch and touch Blackberry devices</title>
		<link>http://funkjedi.com/technology/276-how-to-getting-sencha-touch-working-on-non-touch-and-touch-blackberry-devices/</link>
		<comments>http://funkjedi.com/technology/276-how-to-getting-sencha-touch-working-on-non-touch-and-touch-blackberry-devices/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 16:42:13 +0000</pubDate>
		<dc:creator>funkjedi</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[blackberry]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[phonegap]]></category>
		<category><![CDATA[sencha]]></category>
		<category><![CDATA[sencha touch]]></category>

		<guid isPermaLink="false">http://funkjedi.com/?p=276</guid>
		<description><![CDATA[When I needed to get Sencha Touch to work on non-touch Blackberry devices I tried the approach documented at http://resilientcoder.blogspot.com/2011/03/getting-sencha-touch-to-work-on-non.html At first this appeared to work correctly. But then I tried the app on a touch Blackberry and the touch elements didn&#8217;t work properly any more. So I ditched changes recommended by Resilient Coder and [...]]]></description>
			<content:encoded><![CDATA[<p>When I needed to get Sencha Touch to work on non-touch Blackberry devices I tried the approach documented at<br />
<a href="http://resilientcoder.blogspot.com/2011/03/getting-sencha-touch-to-work-on-non.html">http://resilientcoder.blogspot.com/2011/03/getting-sencha-touch-to-work-on-non.html</a></p>
<p>At first this appeared to work correctly. But then I tried the app on a touch Blackberry and the touch elements didn&#8217;t work properly any more. So I ditched changes recommended by Resilient Coder and went digging into sencha-touch-debug.js myself.</p>
<p>To get Sencha Touch working on both touch and non-touch Blackberry devices you need to make the following changes.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>18098
18099
18100
18101
18102
18103
18104
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>Ext.<span style="color: #660066;">supports</span>.<span style="color: #660066;">Touch</span> <span style="color: #339933;">||</span> Ext.<span style="color: #000066; font-weight: bold;">is</span>.<span style="color: #660066;">Blackberry</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    Ext.<span style="color: #660066;">apply</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">eventNames</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
        start<span style="color: #339933;">:</span> <span style="color: #3366CC;">'mousedown'</span><span style="color: #339933;">,</span>
        <span style="color: #006600; font-style: italic;">//move: 'mousemove',</span>
        end<span style="color: #339933;">:</span> <span style="color: #3366CC;">'mouseup'</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>You need to add <strong>|| Ext.is.Blackberry</strong> to line 18098. This enables clicking on Sench Touch ui elements like buttons and tabs with the thumbpad or trackball. You also need to comment out line 18101 to enable scrolling via touch on Blackberry devices like the Torch. If you don&#8217;t comment this line out scrolling via touch doesn&#8217;t work properly.</p>
<p>The final piece of the puzzle is to enable scrolling using the thumbpad or trackball. This is really more of a work around. It&#8217;s based off the code I found at <a href="http://pastebin.com/Mih4Ps12">http://pastebin.com/Mih4Ps12</a>. To use this work around you basically just extend your scrollable panels from <strong>Ext.NonTouchCompatibleScrollPanel</strong> instead of <strong>Ext.Panel</strong>.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">Ext.<span style="color: #660066;">NonTouchCompatibleScrollPanel</span> <span style="color: #339933;">=</span> Ext.<span style="color: #660066;">extend</span><span style="color: #009900;">&#40;</span>Ext.<span style="color: #660066;">Panel</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066;">scroll</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">'vertical'</span><span style="color: #339933;">,</span>
&nbsp;
    initComponent<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        Ext.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">body</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">on</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'mousemove'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>evt<span style="color: #339933;">,</span> div<span style="color: #339933;">,</span> el<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
            <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">scroller</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #000066; font-weight: bold;">return</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
&nbsp;
            <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">scroller</span>.<span style="color: #660066;">offsetBoundary</span>.<span style="color: #660066;">top</span> <span style="color: #339933;">===</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">scroller</span>.<span style="color: #660066;">updateBoundary</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
&nbsp;
            <span style="color: #003366; font-weight: bold;">var</span> maxOffset <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">scroller</span>.<span style="color: #660066;">offsetBoundary</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">-</span> <span style="color: #CC0000;">400</span><span style="color: #339933;">;</span>
            <span style="color: #003366; font-weight: bold;">var</span> bottom <span style="color: #339933;">=</span> parseInt<span style="color: #009900;">&#40;</span>Ext.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">body</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getStyle</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'height'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #CC0000;">15</span><span style="color: #339933;">;</span>
&nbsp;
            <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>evt.<span style="color: #660066;">xy</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&gt;</span> bottom <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">scroller</span>.<span style="color: #660066;">offset</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">&gt;=</span> maxOffset<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
                <span style="color: #003366; font-weight: bold;">var</span> offset <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #CC0000;">1</span> <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">scroller</span>.<span style="color: #660066;">offset</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">10</span><span style="color: #339933;">;</span>
                <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">scroller</span>.<span style="color: #660066;">scrollTo</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
                    x<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
                    y<span style="color: #339933;">:</span> offset
                <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
            <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>evt.<span style="color: #660066;">xy</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&lt;</span> <span style="color: #CC0000;">60</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">scroller</span>.<span style="color: #660066;">offset</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">&lt;=</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
                <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">scroller</span>.<span style="color: #660066;">scrollTo</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
                    x<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
                    y<span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #CC0000;">1</span> <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">scroller</span>.<span style="color: #660066;">offset</span>.<span style="color: #660066;">y</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #CC0000;">10</span>
                <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>element<span style="color: #339933;">:</span><span style="color: #3366CC;">'el'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        Ext.<span style="color: #660066;">NonTouchCompatibleScrollPanel</span>.<span style="color: #660066;">superclass</span>.<span style="color: #660066;">initComponent</span>.<span style="color: #660066;">call</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">,</span> arguments<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://funkjedi.com/technology/276-how-to-getting-sencha-touch-working-on-non-touch-and-touch-blackberry-devices/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Decode quoted-printable text with Sublime Text or Textmate command</title>
		<link>http://funkjedi.com/technology/270-decode-quoted-printable-text-with-sublime-text-or-textmate-command/</link>
		<comments>http://funkjedi.com/technology/270-decode-quoted-printable-text-with-sublime-text-or-textmate-command/#comments</comments>
		<pubDate>Thu, 06 Jan 2011 16:56:14 +0000</pubDate>
		<dc:creator>funkjedi</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[sublimetext]]></category>
		<category><![CDATA[textmate]]></category>

		<guid isPermaLink="false">http://funkjedi.com/?p=270</guid>
		<description><![CDATA[If your like me you find yourself frequently need to take an HTML email that you received and alter it or clean it up and then send it out again. When you grab the message source what you discover is an ugly block of HTML-like text. It&#8217;s full or things like &#8220;=3D&#8221; or &#8220;=20&#8243;, don&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>If your like me you find yourself frequently need to take an HTML email that you received and alter it or clean it up and then send it out again. When you grab the message source what you discover is an ugly block of HTML-like text. It&#8217;s full or things like &#8220;=3D&#8221; or &#8220;=20&#8243;, don&#8217;t worry. This strange text your seeing is the result the HTML being encoded into the quoted-printable format. This encoding is how email keeps it&#8217;s lines at the appropriate length to be compatible with all the various email servers.</p>
<p>This command which can be used in either E-TextEditor or TextMate will decode the quote-printable encoding. It operated on either your current selection or the whole document. Internally the command itself uses Python to decode the quoted-printable text.</p>
<p><a href="https://github.com/funkjedi/SublimePackages/blob/master/User/decode_quoted_printable.py">Download the quoted-printable decoder Sublime Text command</a><br />
<a href="http://files.funkjedi.com/projects/e-texteditor/Decode%20Quoted-Printable%20Document%20%20Selection.tmCommand">Download the quoted-printable decoder E-TextEditor / TextMate command</a></p>
]]></content:encoded>
			<wfw:commentRss>http://funkjedi.com/technology/270-decode-quoted-printable-text-with-sublime-text-or-textmate-command/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automatically Format Any Javascript Code</title>
		<link>http://funkjedi.com/technology/225-automatically-format-any-javascript-code/</link>
		<comments>http://funkjedi.com/technology/225-automatically-format-any-javascript-code/#comments</comments>
		<pubDate>Sun, 21 Jun 2009 16:07:16 +0000</pubDate>
		<dc:creator>funkjedi</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://funkjedi.com/?p=225</guid>
		<description><![CDATA[Every javascript programmer at somepoint finds themself in a situation where they need to undo the effects of a packer or minifier on their code. Javascript Beautifier to the rescue. It lets you cleanup the super scrunched up code into something more readable. This enables you to recover your source files if you lost your originals [...]]]></description>
			<content:encoded><![CDATA[<p>Every javascript programmer at somepoint finds themself in a situation where they need to undo the effects of a packer or minifier on their code. <a href="http://jsbeautifier.org/">Javascript Beautifier</a> to the rescue.</p>
<p><img class="alignnone size-full wp-image-226" title="Javascript Beautifier" src="http://funkjedi.com/wp-content/uploads/2009/06/javascript-beautifier.png" alt="Javascript Beautifier" width="719" height="187" /></p>
<p>It lets you cleanup the super scrunched up code into something more readable. This enables you to recover your source files if you lost your originals or dig through someone elses code and get a better idea of how other people in the real world are coding.</p>
]]></content:encoded>
			<wfw:commentRss>http://funkjedi.com/technology/225-automatically-format-any-javascript-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Passpack + Chrome = Frustration</title>
		<link>http://funkjedi.com/technology/217-passpack-chrome-frustration/</link>
		<comments>http://funkjedi.com/technology/217-passpack-chrome-frustration/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 06:40:09 +0000</pubDate>
		<dc:creator>funkjedi</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[passpack]]></category>

		<guid isPermaLink="false">http://funkjedi.com/?p=217</guid>
		<description><![CDATA[Everyday I log into Passpack and leave it open all day. So here&#8217;s the problem after having Passpack open for a while I get the following message (it is extremely annoying as it interupts whatever else your up to on the net). This only happens for me in Chrome. It works like butter in Firefox [...]]]></description>
			<content:encoded><![CDATA[<p>Everyday I log into Passpack and leave it open all day. So here&#8217;s the problem after having Passpack open for a while I get the following message (it is extremely annoying as it interupts whatever else your up to on the net). This only happens for me in Chrome. It works like butter in Firefox and I can&#8217;t speak for IE.</p>
<p><img class="alignnone size-full wp-image-184" title="Passpack History Problem" src="http://funkjedi.com/wp-content/uploads/2009/06/Untitled.png" alt="Passpack History Problem" width="362" height="154" /></p>
<p>The initial trigger for the message seems to be random. But after it initial message is seems to come back around every 3 minutes. So I did some digging. After poking around in the source I discovered that they&#8217;re using an older version of Tako Sano&#8217;s <a href="http://www.mikage.to/jquery/jquery_history.html">jQuery history plugin</a>.</p>
<p>So I added some code to the historyCallback do some logging so I could get a better feel for what was going on.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">errorOccurred <span style="color: #339933;">=</span> lastErrorOccurred <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
_back <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>h<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>_backOk<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>_backCallback<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            _backCallback<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            _backCallback <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #003366; font-weight: bold;">var</span> hh <span style="color: #339933;">=</span> parseInt<span style="color: #009900;">&#40;</span>h<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> m <span style="color: #339933;">=</span> $.<span style="color: #660066;">browser</span>.<span style="color: #660066;">netscape</span> <span style="color: #339933;">?</span> <span style="color: #CC0000;">2</span> <span style="color: #339933;">:</span> $.<span style="color: #660066;">browser</span>.<span style="color: #660066;">msie</span> <span style="color: #339933;">?</span> <span style="color: #CC0000;">3</span> <span style="color: #339933;">:</span> <span style="color: #CC0000;">7</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>hh <span style="color: #339933;">&gt;</span> m<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            errorOccurred <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;hh: &quot;</span><span style="color: #339933;">+</span> hh <span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;, m: &quot;</span><span style="color: #339933;">+</span> m <span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;, delta: &quot;</span><span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>errorOccurred <span style="color: #339933;">-</span> lastErrorOccurred<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            lastErrorOccurred <span style="color: #339933;">=</span> errorOccurred<span style="color: #339933;">;</span>
            <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>PP.<span style="color: #660066;">msg</span>.<span style="color: #660066;">man</span>.<span style="color: #660066;">bac</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>After letting this run for a while I started to see a pattern. Here&#8217;s an excerpt of the results.</p>
<ul>
<li>hh: 8, m: 7, delta: 209901 (~3.4 minutes)</li>
<li>hh: 8, m: 7, delta: 200888 (~3.3 minutes)</li>
<li>hh: 8, m: 7, delta: 190944 (~3.2 minutes)</li>
<li>hh: 8, m: 7, delta: 183514 (~3.0 minutes)</li>
<li>hh: 8, m: 7, delta: 197517 (~3.3 minutes)</li>
</ul>
<p>For webkit (Chrome/Safari) based browsers the <a href="http://www.mikage.to/jquery/jquery_history.html">jQuery history plugin</a> manually creates a stack to keep track of the history. So this is where I believe we are encountering the problem. If you look at line 4426 you can see that we create a history with a stack length of 9.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">_back <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>h<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>_backOk<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>_backCallback<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            _backCallback<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            _backCallback <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #003366; font-weight: bold;">var</span> hh <span style="color: #339933;">=</span> parseInt<span style="color: #009900;">&#40;</span>h<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> m <span style="color: #339933;">=</span> $.<span style="color: #660066;">browser</span>.<span style="color: #660066;">netscape</span> <span style="color: #339933;">?</span> <span style="color: #CC0000;">2</span> <span style="color: #339933;">:</span> $.<span style="color: #660066;">browser</span>.<span style="color: #660066;">msie</span> <span style="color: #339933;">?</span> <span style="color: #CC0000;">3</span> <span style="color: #339933;">:</span> <span style="color: #CC0000;">7</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>hh <span style="color: #339933;">&gt;</span> m<span style="color: #009900;">&#41;</span> <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>PP.<span style="color: #660066;">msg</span>.<span style="color: #660066;">man</span>.<span style="color: #660066;">bac</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
runHistory <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    $.<span style="color: #660066;">historyInit</span><span style="color: #009900;">&#40;</span>_back<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    z <span style="color: #339933;">=</span> $.<span style="color: #660066;">browser</span>.<span style="color: #660066;">netscape</span> <span style="color: #339933;">?</span> <span style="color: #CC0000;">2</span> <span style="color: #339933;">:</span> $.<span style="color: #660066;">browser</span>.<span style="color: #660066;">msie</span> <span style="color: #339933;">?</span> <span style="color: #CC0000;">4</span> <span style="color: #339933;">:</span> <span style="color: #CC0000;">8</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> j <span style="color: #339933;">=</span> z<span style="color: #339933;">;</span> j <span style="color: #339933;">&gt;=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> j<span style="color: #339933;">--</span><span style="color: #009900;">&#41;</span> $.<span style="color: #660066;">historyLoad</span><span style="color: #009900;">&#40;</span>j<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    _SetTimeout<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        _backOk <span style="color: #339933;">=</span> <span style="color: #CC0000;">1</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    <span style="color: #CC0000;">3000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>But on line 4419 we are working with a stack with a length of 8.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>4419
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">        <span style="color: #003366; font-weight: bold;">var</span> m <span style="color: #339933;">=</span> $.<span style="color: #660066;">browser</span>.<span style="color: #660066;">netscape</span> <span style="color: #339933;">?</span> <span style="color: #CC0000;">2</span> <span style="color: #339933;">:</span> $.<span style="color: #660066;">browser</span>.<span style="color: #660066;">msie</span> <span style="color: #339933;">?</span> <span style="color: #CC0000;">3</span> <span style="color: #339933;">:</span> <span style="color: #CC0000;">7</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Shouldn&#8217;t this read as follows?</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>4419
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">        <span style="color: #003366; font-weight: bold;">var</span> m <span style="color: #339933;">=</span> $.<span style="color: #660066;">browser</span>.<span style="color: #660066;">netscape</span> <span style="color: #339933;">?</span> <span style="color: #CC0000;">2</span> <span style="color: #339933;">:</span> $.<span style="color: #660066;">browser</span>.<span style="color: #660066;">msie</span> <span style="color: #339933;">?</span> <span style="color: #CC0000;">4</span> <span style="color: #339933;">:</span> <span style="color: #CC0000;">8</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://funkjedi.com/technology/217-passpack-chrome-frustration/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Bypass OpenDNS Blocked Sites At Work</title>
		<link>http://funkjedi.com/technology/151-bypass-opendns-blocked-sites-at-work/</link>
		<comments>http://funkjedi.com/technology/151-bypass-opendns-blocked-sites-at-work/#comments</comments>
		<pubDate>Sat, 02 May 2009 19:32:47 +0000</pubDate>
		<dc:creator>funkjedi</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[opendns]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://funkjedi.com/?p=151</guid>
		<description><![CDATA[So your at work and you really want to watch that YouTube video your buddy sent you. But you can&#8217;t cuz YouTube is blocked. Well I&#8217;m here to show you how. This builds on a previous post I did about listening to Pandora in Canada. Your using the socks proxy we setup before but you still [...]]]></description>
			<content:encoded><![CDATA[<p>So your at work and you really want to watch that YouTube video your buddy sent you. But you can&#8217;t cuz YouTube is blocked. Well I&#8217;m here to show you how. This builds on a previous post I did about listening to <a href="http://funkjedi.com/technology/74-accessing-pandora-from-canada">Pandora in Canada</a>. Your using the socks proxy we setup before but you still can&#8217;t watch YouTube clips because their being blocked at the DNS level. Nothing we can do about that right? Wrong. Lets configure Firefox to send DNS requests over the socks proxy. There by circumventing the DNS blocks at work.</p>
<p><img class="alignnone size-full wp-image-152" title="Firefox - about:config" src="http://funkjedi.com/wp-content/uploads/2009/05/about-config.png" alt="Firefox - about:config" width="444" height="223" /></p>
<p>In Firefox type <strong>about:config</strong> into the address bar. Now type <strong>dns </strong>into the filter. Double-click on the network.proxy.socks_remote_dns to configure Firefox to send our DNS requests through the proxy. Voila! We can now laugh it up watching YouTube clips to our hearts content.</p>
]]></content:encoded>
			<wfw:commentRss>http://funkjedi.com/technology/151-bypass-opendns-blocked-sites-at-work/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Check That Sketchy File With 39 Antivirus Apps</title>
		<link>http://funkjedi.com/technology/147-check-that-sketchy-file-with-39-antivirus-apps/</link>
		<comments>http://funkjedi.com/technology/147-check-that-sketchy-file-with-39-antivirus-apps/#comments</comments>
		<pubDate>Sat, 07 Feb 2009 16:32:05 +0000</pubDate>
		<dc:creator>funkjedi</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[antivirus]]></category>

		<guid isPermaLink="false">http://funkjedi.com/?p=147</guid>
		<description><![CDATA[So you looking at this sketchy file you just downloaded and your a little nervious about running it because you don&#8217;t using any antivirus software. What do you do? Ususally just run the file and hope for the best. Well no more, welcome Virus Total. All you doing is upload the file to Virus Total. [...]]]></description>
			<content:encoded><![CDATA[<p>So you looking at this sketchy file you just downloaded and your a little nervious about running it because you don&#8217;t using any antivirus software. What do you do? Ususally just run the file and hope for the best. Well no more, welcome <a href="http://www.virustotal.com">Virus Total</a>. All you doing is upload the file to Virus Total. They scan it with 39 different antivirus engines and give you the results.</p>
<p><img class="alignnone size-full wp-image-148" title="Virus Total" src="http://funkjedi.com/wp-content/uploads/2009/02/virustotal.jpg" alt="Virus Total" width="568" height="228" /></p>
<p>A great solution for scanning those small sketchy files that all of us end up downloading at some point to get our software to work they way we want it to.</p>
]]></content:encoded>
			<wfw:commentRss>http://funkjedi.com/technology/147-check-that-sketchy-file-with-39-antivirus-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows 7 Taskbar Progress Bar for Explorer</title>
		<link>http://funkjedi.com/technology/133-windows-7-taskbar-progress-bar-for-explorer/</link>
		<comments>http://funkjedi.com/technology/133-windows-7-taskbar-progress-bar-for-explorer/#comments</comments>
		<pubDate>Sun, 04 Jan 2009 20:28:35 +0000</pubDate>
		<dc:creator>funkjedi</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[explorer]]></category>
		<category><![CDATA[windows 7]]></category>

		<guid isPermaLink="false">http://funkjedi.com/?p=133</guid>
		<description><![CDATA[I&#8217;ve been playing around with Windows 7 for a while. Just recently I updated my install to the Windows 7 Beta 1 (Build 7000). When I was coping over my iTunes library I noticed something kind of cool going on in the taskbar. While the files were transfering in a mini progress bar was displayed [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been playing around with Windows 7 for a while. Just recently I updated my install to the Windows 7 Beta 1 (Build 7000). When I was coping over my iTunes library I noticed something kind of cool going on in the taskbar. While the files were transfering in a mini progress bar was displayed behind the Explorer icon in the taskbar.</p>
<p><img class="alignnone size-full wp-image-137" title="Windows 7 - Progress Bar in the Taskbar" src="http://funkjedi.com/wp-content/uploads/2009/01/windows7-toolbar.jpg" alt="Windows 7 - Progress Bar in the Taskbar" width="723" height="237" /></p>
<p>It&#8217;s the little things like this that make Windows 7 really cool. I won&#8217;t talk about it too much right now but what makes Windows 7 worth while for me is the new Explorer interface. So much better than Vista&#8217;s Explorer interface.</p>
]]></content:encoded>
			<wfw:commentRss>http://funkjedi.com/technology/133-windows-7-taskbar-progress-bar-for-explorer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Screenshots of Your Website in 50 Browsers</title>
		<link>http://funkjedi.com/technology/106-screenshot-of-your-website-in-50-browsers/</link>
		<comments>http://funkjedi.com/technology/106-screenshot-of-your-website-in-50-browsers/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 17:29:09 +0000</pubDate>
		<dc:creator>funkjedi</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://funkjedi.com/?p=106</guid>
		<description><![CDATA[Have you ever wondered what your website looked like in other browsers or even in other operating systems? Well the answer is here, browsershots.org. Browsershots is a free and open-source online service which generated screenshots of your website: in different browsers, on different platforms, and with different plugins. It&#8217;s a true amazing service. It&#8217;s a [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever wondered what your website looked like in other browsers or even in other operating systems? Well the answer is here, <a href="http://browsershots.org">browsershots.org</a>. Browsershots is a free and open-source online service which generated screenshots of your website: in different browsers, on different platforms, and with different plugins. It&#8217;s a true amazing service. It&#8217;s a must for every web designer&#8217;s arsenal.</p>
]]></content:encoded>
			<wfw:commentRss>http://funkjedi.com/technology/106-screenshot-of-your-website-in-50-browsers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Accessing Pandora from Canada</title>
		<link>http://funkjedi.com/technology/74-accessing-pandora-from-canada/</link>
		<comments>http://funkjedi.com/technology/74-accessing-pandora-from-canada/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 00:03:53 +0000</pubDate>
		<dc:creator>funkjedi</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[internet radio]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[pandora]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://funkjedi.com/?p=74</guid>
		<description><![CDATA[If your like me you absolutely love the Pandora music service. However due to greedy music labels pushing their agenda in Washinton (see SaveNetRadio.org) Pandora was forced to limit its service to the US. What&#8217;s a geek to do? Why&#8230; use an ssh tunnel to proxy the Pandora service through a US server. How? You [...]]]></description>
			<content:encoded><![CDATA[<p>If your like me you absolutely love the <a href="http://www.pandora.com">Pandora</a> music service. However due to greedy music labels pushing their agenda in Washinton (see <a href="http://www.savenetradio.org">SaveNetRadio.org</a>) Pandora was forced to limit its service to the US. What&#8217;s a geek to do? Why&#8230; use an ssh tunnel to proxy the Pandora service through a US server. How? You may ask. </p>
<p>First we&#8217;ll setup the ssh tunnel. For that we&#8217;re going to use an application called <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">Putty</a>. To setup the ssh tunnel you&#8217;ll need to have access to a server based in the US with ssh enabled (for example &#8211; a Dreamhost account). For the purpose of the tutorial we&#8217;ll call the server &#8220;example.com&#8221;. After launching Putty you need to enter the hostname into the field provided. Now comes the magic. Expand the SSH category and select Tunnels. Under source port enter <strong>8080</strong>, select the &#8220;Dynamic&#8221; and then click the Add button.</p>
<p><a href="http://funkjedi.com/wp-content/uploads/2008/12/ssh-tunnel-part2.jpg"></a><a href="http://funkjedi.com/wp-content/uploads/2008/12/ssh-tunnel-part2.jpg"><img class="alignnone size-full wp-image-98" title="SSH Tunnel - Part 1" src="http://funkjedi.com/wp-content/uploads/2008/12/ssh-tunnel-part2.jpg" alt="SSH Tunnel - Part 1" width="466" height="143" /></a></p>
<p>Click on the Open button. After click on Open you&#8217;ll be prompted for your username and password for, in the case of this example, example.com. After successful establishing your ssh connection all you have left to do is setup Firefox to use this ssh tunnel as a proxy.</p>
<p>Open up Firefox and select &#8220;Options&#8221; from the Tool menu then click on &#8220;Advanced&#8221;. Next click on the &#8220;Network&#8221; tab, then the &#8220;Settings&#8221; button. Select &#8220;Manual proxy configuration&#8221;. Now comes the important settings.  Erase the HTTP Proxy, SSL Proxy, FTP Proxy, and Gopher Proxy fields. Enter <strong>127.0.0.1</strong> under SOCKS Host and <strong>8080</strong> under Port.</p>
<p><a href="http://funkjedi.com/wp-content/uploads/2008/12/ssh-tunnel-part4.jpg"></a><a href="http://funkjedi.com/wp-content/uploads/2008/12/ssh-tunnel-part4.jpg"><img class="alignnone size-full wp-image-99" title="SSH Tunnel - Part 2" src="http://funkjedi.com/wp-content/uploads/2008/12/ssh-tunnel-part4.jpg" alt="SSH Tunnel - Part 2" width="461" height="247" /></a></p>
<p>Click OK and click OK once more. We&#8217;re done! Browse to <a href="http://www.pandora.com">www.pandora.com</a> and crank the tunes.</p>
]]></content:encoded>
			<wfw:commentRss>http://funkjedi.com/technology/74-accessing-pandora-from-canada/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

