<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.geeklad.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>GeekLad</title> <link>http://geeklad.com</link> <description /> <lastBuildDate>Thu, 03 May 2012 19:52:06 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.geeklad.com/GeekLad" /><feedburner:info uri="geeklad" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>GeekLad</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item><title>How to Block Websites</title><link>http://feeds.geeklad.com/~r/GeekLad/~3/tEgOaEudzMM/how-to-block-websites</link> <comments>http://geeklad.com/how-to-block-websites#comments</comments> <pubDate>Tue, 10 Apr 2012 11:00:38 +0000</pubDate> <dc:creator>GeekLad</dc:creator> <category><![CDATA[Internet]]></category><guid isPermaLink="false">http://geeklad.com/?p=3138</guid> <description><![CDATA[This post will show you how to block websites, without the installation of website blockers or other programs to block websites. Fortunately, all desktop operating systems (Windows, Macintosh OS X, Linux) have a built-in mechanisms that make it very easy to do.Blocking Websites with the Hosts File
The hosts file contains [...]]]></description> <content:encoded><![CDATA[<p><img
class="alignleft size-full wp-image-3139" style="border: 0 none;" title="How to Block Websites" src="http://geeklad.com/wp-content/uploads/2012/02/how-to-block-websites.png?cda6c1" alt="How to Block Websites" width="200" height="200" />This post will show you <strong>how to block websites</strong>, without the installation of website blockers or other programs to block websites. Fortunately, all desktop operating systems (Windows, Macintosh OS X, Linux) have a built-in mechanisms that make it very easy to do.</p><p><span
id="more-3138"></span><br
/><h3>Blocking Websites with the Hosts File</h3><p>The <strong>hosts</strong> file contains a shortcut list for assigning name addresses (such as geeklad.com) to number addresses (173.245.60.113). To block websites with using the hosts file, you simply create &#8220;invalid shortcuts&#8221; for the websites you want to block. The easiest way to do this is to assign the name address for these websites to your computer&#8217;s local number address (127.0.0.1).</p><h3>Host File Location</h3><p>The location of your hosts file depends on what operating system you&#8217;re using. Here&#8217;s a quick cheat sheet for Windows, OS X, and Linux:</p><ul><li><strong>Windows</strong>: %SystemRoot%\system32\drivers\etc\hosts (typically %SystemRoot% is C:\WINDOWS, but it can be different)<li><strong>Mac OS X</strong>: /private/etc/hosts<li><strong>Linux</strong>: /etc/hosts</ul><h3>Editing the Hosts File</h3><p>You can use any editor to modify the hosts file.  In Windows, you can <b>Click Start</b>, <b>Run&#8230;</b>, and then type <b>notepad %SystemRoot%\system32\drivers\etc\hosts</b></p><p><img
src="http://geeklad.com/wp-content/uploads/2012/02/how-to-block-websites-with-windows-notepad.png?cda6c1" alt="" title="how-to-block-websites-with-windows-notepad" width="377" height="428" class="aligncenter size-full wp-image-3143" style="border: 0 none;" /></p><p><img
src="http://geeklad.com/wp-content/uploads/2012/02/launch-notepad-to-edit-hosts.png?cda6c1" alt="" title="launch-notepad-to-edit-hosts" width="347" height="186" class="aligncenter size-full wp-image-3147" style="border: 0 none;" /></p><p>To add a website you want to block, just add a new line with 127.0.0.1 followed by the name of the website.  For example:</p><p><img
src="http://geeklad.com/wp-content/uploads/2012/02/editing-hosts-file-in-windows.png?cda6c1" alt="" title="editing-hosts-file-in-windows" width="613" height="385" class="aligncenter size-full wp-image-3144" style="border: 0 none;" /></p><h3>Lists of Websites to Block</h3><p>Fortunately, there are already numerous existing lists of websites to block.  These lists typically consist of websites that are known to be harmful or perform actions such as tracking your browsing activity.  Here are a few you may want to check out:</p><ul><li><a
href="http://someonewhocares.org/hosts/hosts">someonewhocares hosts file</a><li><a
href="http://winhelp2002.mvps.org/hosts.zip">MVPS hosts file</a><li><a
href="http://hostsfile.org/Downloads/hosts.txt">hostsfile.org</a></ul><p>You can download these files and then copy and paste the contents into your hosts file.  Another (easier) option is to download and use a <a
href="http://www.abelhadigital.com/hostsman">host file manager tool called HostsMan</a>.  HostsMan provides an easy mechanism for importing website blocker host lists into your own hosts file.</p><h3>How to Block Porn Sites</h3><p>Another option is to use Proxy Autoconfiguration (PAC) files to block websites.  Eric Phelps has put together some very nice tools for <a
href="http://www.ericphelps.com/security/pac.htm">using PAC to block porn sites</a>.  He even has put together a <a
href="http://www.ericphelps.com/security/ProxyInstall.vbs">VB script to install and configure his porn site blocking method</a>.  It will only work on Windows.</p><p>This method for blocking porn sites, essentially creates a local proxy that prevents you from being able to connect to porn sites.  The disadvantage of using this method is that the browser must be configured to use the local proxy.  It is easy to bypass by disabling the proxy option in the browser.</p><h3>How to Block Websites with DNS Services</h3><p>OpenDNS is a <a
href="http://www.opendns.com/home-solutions/">DNS service you can use to block websites</a>.  It is yet another method you can use as a website blocker, without having to install additional software on your computers.  It works very much like the hosts file method, by resolving the addresses of undesirable sites to an invalid location.  You can <a
href="https://store.opendns.com/get/home-free">sign up for their basic service for free</a>.</p><h3>Use Privoxy to Block Websites</h3><p><a
href="http://www.privoxy.org/">Privoxy</a> is a superb and free and open source program you can use to block websites.  It is already pre-configured to block advertisements and malicious sites.  You just need to <a
href="http://sourceforge.net/projects/ijbswa/files/">download it</a>, install it, and configure your web browser to use it.</p><p>Once you&#8217;ve installed it, you&#8217;ll see an icon for it in your system tray.  If you right-click on it, you&#8217;ll see Privoxy is running.</p><p><img
src="http://geeklad.com/wp-content/uploads/2012/04/block-websites-with-privoxy.png?cda6c1" alt="" title="block-websites-with-privoxy" width="271" height="118" class="aligncenter size-full wp-image-3153" /></p><p>To take advantage of Privoxy, you&#8217;ll need to configure your browser to use it.  The exact sequence will vary, depending on what browser you&#8217;re using.  For most Internet Explorer versions, just go to <b>Tools</b> &gt; <b>Options</b></p><p><img
src="http://geeklad.com/wp-content/uploads/2012/04/internet-expolorer-connections-lan-settings.png?cda6c1" alt="" title="internet-expolorer-connections-lan-settings" class="aligncenter size-medium wp-image-3154" /></a></p><p>Click the <b>Connections</b> tab in the <i>Internet Options</i> dialog and then click the <b>LAN Settings</b> button.</p><p><img
src="http://geeklad.com/wp-content/uploads/2012/04/internet-expolorer-lan-settings.png?cda6c1" alt="" title="internet-expolorer-lan-settings" width="384" height="332" class="aligncenter size-full wp-image-3155" /></p><p>Click the checkbox that says <b>Use a proxy server for your LAN</b> and then click the <b>Advanced</b> button.  Finally, in the <i>Proxy Settings</i> window, enter <b>localhost</b> for the HTTP proxy address and <b>8118</b> for the port.</p><p><img
src="http://geeklad.com/wp-content/uploads/2012/04/internet-expolorer-proxy-settings.png?cda6c1" alt="" title="internet-expolorer-proxy-settings" class="aligncenter size-medium wp-image-3156" /></p> 
<p><a href="http://feedads.g.doubleclick.net/~a/-1Q3aouUxFBwB34Y_tQXMpdaDho/0/da"><img src="http://feedads.g.doubleclick.net/~a/-1Q3aouUxFBwB34Y_tQXMpdaDho/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/-1Q3aouUxFBwB34Y_tQXMpdaDho/1/da"><img src="http://feedads.g.doubleclick.net/~a/-1Q3aouUxFBwB34Y_tQXMpdaDho/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=tEgOaEudzMM:aFtpqaXKJVs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=tEgOaEudzMM:aFtpqaXKJVs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=tEgOaEudzMM:aFtpqaXKJVs:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=tEgOaEudzMM:aFtpqaXKJVs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=tEgOaEudzMM:aFtpqaXKJVs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=tEgOaEudzMM:aFtpqaXKJVs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=tEgOaEudzMM:aFtpqaXKJVs:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=tEgOaEudzMM:aFtpqaXKJVs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/GeekLad/~4/tEgOaEudzMM" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://geeklad.com/how-to-block-websites/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://geeklad.com/how-to-block-websites</feedburner:origLink></item> <item><title>How to Delete History on Google Chrome</title><link>http://feeds.geeklad.com/~r/GeekLad/~3/3-1HpvuuuTM/how-to-delete-history-on-google-chrome</link> <comments>http://geeklad.com/how-to-delete-history-on-google-chrome#comments</comments> <pubDate>Thu, 23 Feb 2012 02:08:19 +0000</pubDate> <dc:creator>GeekLad</dc:creator> <category><![CDATA[Web Browsers]]></category> <category><![CDATA[Google Chrome]]></category><guid isPermaLink="false">http://geeklad.com/?p=3101</guid> <description><![CDATA[You may on occasion find yourself wanting to clear cache files, remove cookies, remove history, and perform other tasks to manage your private browser files.  In Google Chrome, you can delete your browsing history at a very granular level or large portions of it all at once.How to Delete [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://geeklad.com/wp-content/uploads/2009/07/google-chrome-ball.jpg?cda6c1" alt="" title="google-chrome-ball" width="150" height="150" class="alignleft size-full wp-image-1654" style="border: 0 none;"/>You may on occasion find yourself wanting to clear cache files, remove cookies, remove history, and perform other tasks to manage your private browser files.  In Google Chrome, you can delete your browsing history at a very granular level or large portions of it all at once.</p><p><span
id="more-3101"></span><a
name="entire-history" alt="Deleting Entire History on Google Chrome" title="Deleting Entire History on Google Chrome"><a><br
/><h3>How to Delete Certain Time Frames or Entire History from Google Chrome</h3><p>First, you need to get into the Google Chrome preferences screen, by clicking the <b>options wrench</b> and then clicking <b>Preferences</b>:</p><p><a
rel="lightbox[a]" href="http://geeklad.com/wp-content/uploads/2012/02/google-chrome-preferences.png?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/02/google-chrome-preferences-233x300.png?cda6c1" alt="Google Chrome Preferences" title="Google Chrome Preferences" width="233" height="300" class="aligncenter size-medium wp-image-3104" /></a></p><p>If you want to clear all files within a certain time frame of your history, clear cache files, cookies, and more, click the <b>Under the Hood</b> section on the left, and then the <b>Clear Browsing Data&#8230;</b> button on the right:</p><p><a
rel="lightbox[a]" href="http://geeklad.com/wp-content/uploads/2012/02/google-chrome-preferences-under-the-hood-clear-browsing-data.png?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/02/google-chrome-preferences-under-the-hood-clear-browsing-data-300x128.png?cda6c1" alt="Google Chrome Browsing data Button" title="Google Chrome Browsing data Button" width="300" height="128" class="aligncenter size-medium wp-image-3105" /></a></p><p>You&#8217;ll be presented with a screen that provides many different options to delete browsing history and other private data:</p><p><a
rel="lightbox[a]" href="http://geeklad.com/wp-content/uploads/2012/02/google-chrome-clear-cache-portions-at-a-time.png?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/02/google-chrome-clear-cache-portions-at-a-time-300x178.png?cda6c1" alt="Delete private files in Google Chrome within a certain time period" title="Delete private files in Google Chrome within a certain time period" width="300" height="178" class="aligncenter size-medium wp-image-3107" /></a></p><ul><li><b>Obliterate the following items from:</b> This dropdown menu allows you to select the span of time for which you want to delete history and other private data.  You can delete items from the past hour, past day, past week, past 4 weeks, or delete all private data regardless of when they were created.  Only the items for the selected checkboxes will be deleted for the time frame you select.<li><b>Clear browsing history</b>: Checking this box will delete your browsing history.  However, any old webpages, images, and supporting files will still remain in the cache.  If you want to really cover your tracks, be sure to empty the cache as well.<li><b>Clear download history</b>: This will clear your download history, which can be viewed by pressing <b>Ctrl+J</b>.  Please note, this does not delete any downloaded files.<li><b>Empty the cache</b>: Check this box to clear cache files.  Your cache contains files downloaded to display webpages, such as images, JavaScript files, stylesheets, and the HTML code for the pages themselves.<li><b>Delete cookies and other site and plug-in data</b>: Check this to delete your cookies and plug-in data.  Cookies are special files you download from websites that store information about your session with the website.  If you clear your cookies, you will have to log into any websites you were previously logged into prior to deleting them.<li><b>Clear saved passwords</b>: Pretty self explanatory<li><b>Clear saved Autofill form data</b>: Autofill is a feature in Google Chrome that remembers values that you enter into forms you fill out on webpages.  If you want to erase these from the browser, click this checkbox.</ul><p><a
name="specific-pages" title="Deleting Individual Webpages" alt="Deleting Individual Webpages"></a><br
/><h3>How to Delete Individual Webpages in Google Chrome History</h3><p>If you want to delete specific visits from your history, you can review your entire browser history by pressing <b>Ctrl+H</b>.  Alternatively, you can click the <b>options wrench</b> and then click <b>History</b>:</p><p><a
rel="lightbox[b]" href="http://geeklad.com/wp-content/uploads/2012/02/navigate-to-google-chrome-history.png?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/02/navigate-to-google-chrome-history-231x300.png?cda6c1" alt="Navigate to Google Chrome History" title="Navigate to Google Chrome History" width="231" height="300" class="aligncenter size-medium wp-image-3109" /></a></p><p>When you are in the history page, if you hover an individual webpage you&#8217;ve visited, you&#8217;ll notice it is highlighted in light blue and a checkbox appears to the left of the name of the web page.  To delete history for individual web pages you&#8217;ve visited, click the checkbox and then click the <b>Remove selected items</b> button:</p><p><a
rel="lightbox[b]" href="http://geeklad.com/wp-content/uploads/2012/02/deleting-individual-visits-from-google-chrome-history.png?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/02/deleting-individual-visits-from-google-chrome-history-300x142.png?cda6c1" alt="Deleting Individual Web Pages from Google Chrome History" title="Deleting Individual Web Pages from Google Chrome History" width="300" height="142" class="aligncenter size-medium wp-image-3110" /></a></p><p><a
name="several-pages" title="Deleting Several Pages from Google Chrome History" alt="Deleting Several Pages from Google Chrome History"></a><br
/><h3>How to Delete Several Pages from Google Chrome History</h3><p>It is also relatively easy to delete multiple pages from your history at once.  Say you want to delete Newegg from your history.  Just type <b>newegg</b> in the search bar at the top of the history page, then click </b>Search History</b>.  You&#8217;ll see all instances of newegg in your history.</p><p>To delete the history for all of the displayed pages (or certain groups at once), hover over the first row until you see it highlighted.  Then hold the <b>Shift</b> key down on your keyboard, move down to the last page you want to select, and then click the checkbox on it.  All of the checkboxes between them will also be selected.  Then just click the <b>Remove selected items</b> button.</p><p><a
rel="lightbox[c]" href="http://geeklad.com/wp-content/uploads/2012/02/delete-several-webpages-from-google-chrome-history.png?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/02/delete-several-webpages-from-google-chrome-history-300x197.png?cda6c1" alt="" title="delete-several-webpages-from-google-chrome-history" width="300" height="197" class="aligncenter size-medium wp-image-3117" /></a></p><p>Now you know how to delete history on Google Chrome three different ways.  Enjoy! <img
src="http://geeklad.com/wp-includes/images/smilies/icon_biggrin.gif?cda6c1" alt=':-D' class='wp-smiley' /></p> 
<p><a href="http://feedads.g.doubleclick.net/~a/SJsn5OYyKxscXmU8au3Rgzs2eGs/0/da"><img src="http://feedads.g.doubleclick.net/~a/SJsn5OYyKxscXmU8au3Rgzs2eGs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/SJsn5OYyKxscXmU8au3Rgzs2eGs/1/da"><img src="http://feedads.g.doubleclick.net/~a/SJsn5OYyKxscXmU8au3Rgzs2eGs/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=3-1HpvuuuTM:-JhcZ1zDpTc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=3-1HpvuuuTM:-JhcZ1zDpTc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=3-1HpvuuuTM:-JhcZ1zDpTc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=3-1HpvuuuTM:-JhcZ1zDpTc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=3-1HpvuuuTM:-JhcZ1zDpTc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=3-1HpvuuuTM:-JhcZ1zDpTc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=3-1HpvuuuTM:-JhcZ1zDpTc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=3-1HpvuuuTM:-JhcZ1zDpTc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/GeekLad/~4/3-1HpvuuuTM" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://geeklad.com/how-to-delete-history-on-google-chrome/feed</wfw:commentRss> <slash:comments>2</slash:comments> <feedburner:origLink>http://geeklad.com/how-to-delete-history-on-google-chrome</feedburner:origLink></item> <item><title>Modifying the JavaScript String Prototype</title><link>http://feeds.geeklad.com/~r/GeekLad/~3/v-NX4gaFhno/html-entities-in-js-and-modifying-string-prototype</link> <comments>http://geeklad.com/html-entities-in-js-and-modifying-string-prototype#comments</comments> <pubDate>Wed, 22 Feb 2012 00:54:00 +0000</pubDate> <dc:creator>GeekLad</dc:creator> <category><![CDATA[Programming]]></category> <category><![CDATA[JavaScript]]></category><guid isPermaLink="false">http://geeklad.com/?p=3081</guid> <description><![CDATA[When manipulating strings in JavaScript, it is often necessary to perform certain functions to escape characters, decode them, and perform other string manipulations.  JavaScript makes it easy to modify the String prototype, making it possible to create new methods on String types.  As of late, I&#8217;ve preferred this [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://geeklad.com/wp-content/uploads/2012/02/script.png?cda6c1" alt="" title="script" width="200" height="160" class="alignleft size-full wp-image-2813" style="border: 0 none;"/>When manipulating strings in JavaScript, it is often necessary to perform certain functions to escape characters, decode them, and perform other string manipulations.  JavaScript makes it easy to modify the String prototype, making it possible to create new methods on String types.  As of late, I&#8217;ve preferred this method (pun intended) over creating custom functions.</p><p><span
id="more-3081"></span>I was recently working on a project in which I was using JavaScript to output HTML (my <a
href="http://geeklad.com/updated-script-to-download-google-history">Google History download tool</a>).  I needed to escape special HTML characters in the string, in order to prevent problems with the output being mangled by any &lt; followed by &gt; characters in the strings I was outputting.  I created a simple String method that emulates <a
href="http://php.net/manual/en/function.htmlentities.php">PHP&#8217;s htmlentities function</a>:</p><pre class="brush: js">

String.prototype.htmlEntities = function() {
	return this.valueOf().replace(/&amp;/g, '&amp;amp;').replace(/&lt;/g, '&amp;lt;').replace(/&gt;/g, '&amp;gt;').replace(/&quot;/g, '&amp;quot;');
}
foo = "&lt;pre&gt;This string has HTML tags&lt;pre&gt;";
bar = foo.htmlEntities(); // bar contains: &amp;lt;pre&amp;gt;This string has HTML tags&amp;lt;pre&amp;gt;
</pre><p>It&#8217;s quite rudimentary, and simply chains together a few replace calls to search/replace <b>&amp;, &lt;, &gt;, and &quot;</b> characters with the appropriate HTML escape characters.  Unfortunately JavaScript provides no htmlentities equivalent, but it is easy enough to recreate via a simple String method.</p><p>If you are encoding strings to be used in URLs, you&#8217;ll want to use the escape(), encodeURI(), and encodeURIComponent() JavaScript functions.  Each function varies slightly in the characters it converts.  If you want, you can convert them into String methods rather than use them as functions:</p><pre class="brush: js">

String.prototype.escape = function() {return escape(this.valueOf());}
String.prototype.encodeURI = function() {return encodeURI(this.valueOf());}
String.prototype.encodeURIComponent = function() {return encodeURIComponent(this.valueOf());}

special_chars = '~!@#$%^&#038;*(){}[]=:/,;?+\'"\\';
str1 = special_chars.escape(); // str1 contains: %7E%21@%23%24%25%5E%26*%28%29%7B%7D%5B%5D%3D%3A/%2C%3B%3F+%27%22%5C
str2 = special_chars.encodeURI(); // str2 contains: ~!@#$%25%5E&#038;*()%7B%7D%5B%5D=:/,;?+'%22%5C
str3 = special_chars.encodeURIComponent(); // str3 contains: ~!%40%23%24%25%5E%26*()%7B%7D%5B%5D%3D%3A%2F%2C%3B%3F%2B'%22%5C
</pre><p>Writing methods for built-in JavaScript may be a bit of overkill, but it&#8217;s a nice way to demonstrate how easy it is to create new JavaScript methods for the String object.  To learn more about these URL escaping functions, be sure to visit: <a
href="http://xkr.us/articles/javascript/encode-compare/">http://xkr.us/articles/javascript/encode-compare/</a>.</p><p>Perhaps a better example for another String manipulation method you may want, is a method to remove tags:</p><pre class="brush: js">

String.prototype.stripTags = function() {
	return this.valueOf().replace(/&lt;[^&gt;]+&gt;/g, "");
}
foo = "&lt;pre&gt;This string has HTML tags&lt;pre&gt;";
bar = foo.stripTags(); // bar contains: This string has HTML tags
</pre><p>A couple of more tips when creating String methods in JavaScript:</p><ul><li>When you&#8217;re writing new methods for strings, be sure to refer to this.valueOf() to obtain the value of the string object itself<li>If you create any variables within your new methods, be sure to use the var directive to declare/assign the variables.  If you do not use the var directive, the internal variables will have a global scope, which can wreak havoc on your code!</ul><p>The last tip really applies to any object methods and custom JavaScript functions you create.  Although it can be convenient that JavaScript does not require explicit declaration of variables and types, it can be problematic to debug if you do not declare variables within object methods and global functions.</p><p>Any variables declared in an object method or function without the var directive will be global.  If you reuse variable names in multiple methods/functions (such as &#8220;x&#8221; or &#8220;i&#8221; for loop variables, for example), you may experience very unexpected results if you do not explicitly declare them with the var directive.</p> 
<p><a href="http://feedads.g.doubleclick.net/~a/52aZG5W2l5db-dlSxZkCBTgLOwM/0/da"><img src="http://feedads.g.doubleclick.net/~a/52aZG5W2l5db-dlSxZkCBTgLOwM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/52aZG5W2l5db-dlSxZkCBTgLOwM/1/da"><img src="http://feedads.g.doubleclick.net/~a/52aZG5W2l5db-dlSxZkCBTgLOwM/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=v-NX4gaFhno:CEOaX3_Hb60:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=v-NX4gaFhno:CEOaX3_Hb60:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=v-NX4gaFhno:CEOaX3_Hb60:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=v-NX4gaFhno:CEOaX3_Hb60:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=v-NX4gaFhno:CEOaX3_Hb60:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=v-NX4gaFhno:CEOaX3_Hb60:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=v-NX4gaFhno:CEOaX3_Hb60:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=v-NX4gaFhno:CEOaX3_Hb60:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/GeekLad/~4/v-NX4gaFhno" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://geeklad.com/html-entities-in-js-and-modifying-string-prototype/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://geeklad.com/html-entities-in-js-and-modifying-string-prototype</feedburner:origLink></item> <item><title>Updated Script to Download Google History</title><link>http://feeds.geeklad.com/~r/GeekLad/~3/hjMHuf-HS-I/updated-script-to-download-google-history</link> <comments>http://geeklad.com/updated-script-to-download-google-history#comments</comments> <pubDate>Tue, 21 Feb 2012 01:41:34 +0000</pubDate> <dc:creator>GeekLad</dc:creator> <category><![CDATA[Internet]]></category> <category><![CDATA[Google History]]></category> <category><![CDATA[Google Web History]]></category><guid isPermaLink="false">http://geeklad.com/?p=3041</guid> <description><![CDATA[A little over a week ago, I completed the first version of a script (in the form of a JavaScript bookmarklet) that allows you to download your Google Web History.  Shortly afterwards, I posted some comments on a few other pages with similar scripts.  Someone saw one of [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://geeklad.com/wp-content/uploads/2008/11/google-logo.png?cda6c1" alt="" title="google-logo" width="160" height="58" class="alignleft size-full wp-image-619" border="0 none;" />A little over a week ago, I completed the first version of a script (in the form of a JavaScript bookmarklet) that allows you to download your <a
href="http://geeklad.com/download-google-history">Google Web History</a>.  Shortly afterwards, I posted some comments on a few <a
href="http://pte.ro/component/content/article/2-bits-of-code/6-download-google-web-history-using-python">other pages</a> with <a
href="http://martinjc.com/2011/06/05/google-web-history/">similar scripts</a>.  Someone saw one of my comments and posted a comment on my article (posted as metal123, this person normally goes by the handle &#8220;Naka&#8221;).</p><p><span
id="more-3041"></span>Naka informed me of additional parameters for the Google Web History RSS feed of which I was unaware: <b>yr</b>, <b>month</b>, and <b>day</b>.  I may have actually seen them earlier, but their significance and how I could use them did not dawn on me until I read Naka&#8217;s comment thoroughly.  There was a major problem with the first revision of my script: it would only successfully obtain about 4k or so records of history.</p><p>No matter what I did with the parameters I was using (namely <b>num</b> and <b>start</b>), the script would only download a partial history.  However, with some modifications to the code, I was able to take advantage of the date parameters, and update the script to download a Google History in its entirety.</p><p><a
name="usage" title="Installation and Usage" alt="Installation and Usage"></a><br
/><h3>Installation and Usage</h3><p>The usage is the same, with the exception of some additional new features, which are fairly easy to use (you will need Flash for it to work).  To use it, drag and drop this bookmarklet to your bookmarks bar:</p><p><p
style="text-align: center;"><a
style="border: 1px solid #888888; padding: 4px 8px; font-weight: bold;" title="Download Google Web History" href='javascript:void(function(){s=document.createElement("script");s.src="http://geeklad.com/tools/google-history/google-history.js?cda6c1";document.body.appendChild(s);})();'>Download Google Web History</a></p></p><p>Then visit <a
href="https://www.google.com/history">https://www.google.com/history</a>, log into your Google History, and click the bookmarklet.  Accept any warnings that may come up about insecure content being loaded (it loads some JavaScript and Flash movie from my server), and <strong>click the bookmarklet again to begin</strong> the download process.  For more info about the security dialogs you may encounter, refer to the <a
href="http://geeklad.com/download-google-history#usage">usage section of the original post</a>.</p><p>Please note that no private information of yours is ever transmitted/received to/from any server other than Google&#8217;s.  Read the <a
href="http://geeklad.com/download-google-history#privacy-info">privacy info on my Google History Download script</a> to learn more.  The new download dialog box looks like this:</p><p><a
rel="lightbox[a]" href="http://geeklad.com/wp-content/uploads/2012/02/new-google-web-history-download-dialog.png?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/02/new-google-web-history-download-dialog-300x161.png?cda6c1" alt="" title="new-google-web-history-download-dialog" width="300" height="161" class="aligncenter size-medium wp-image-3049" /></a></p><p>Be prepared to wait quite a while for your full history to download, if you want to get it all.  Just to give you an idea of what to expect: I have over 40k searches and it downloaded over 135k records and the CSV was about 28MB in size.  If you get sick of waiting, click the Cancel button and get what has been downloaded so far.</p><p>Notice that a cancel button has been added, as well as a note at the bottom of the window indicating the oldest record that has been downloaded.  When you cancel the download, you can download a CSV with the records completed thus far.  You&#8217;ll also be given the option to resume your download:</p><p><a
rel="lightbox[a]" href="http://geeklad.com/wp-content/uploads/2012/02/continue-button-to-resume-google-history-download.png?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/02/continue-button-to-resume-google-history-download-300x80.png?cda6c1" alt="" title="continue-button-to-resume-google-history-download" width="300" height="80" class="aligncenter size-medium wp-image-3051" /></a></p><p>If ever your Google prompts for a password on the RSS feed behind the scenes, a dialog will appear with instructions for logging back into your Google Web History and resuming the download:</p><p><a
rel="lightbox[a]" href="http://geeklad.com/wp-content/uploads/2012/02/google-history-download-timeout.png?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/02/google-history-download-timeout-300x105.png?cda6c1" alt="" title="google-history-download-timeout" width="300" height="105" class="aligncenter size-medium wp-image-3053" /></a></p><p>You may see this dialog if you have your history up and are idle for a while.  It does also appear sometimes when a lot of requests are made to the RSS feed (which the script does indeed do).</p><p><a
name="new-features" title="New Features" alt="New Features"></a><br
/><h3>New features</h3><p>I&#8217;ve included a number of improvements in the new version:</p><ul><li>Now obtains the entire Google Web History<li>Given that it may take a long time to download one&#8217;s entire history, I&#8217;ve added a cancel button<li>There is also a button to resume, if the download is cancelled<li>History login timeout is more gracefully handled, resuming where it left off after the user logs back into history using another browser window<li>As records are being downloaded, the oldest date loaded is displayed at the bottom of the window &#8212; this helps to know how much history has been gathered as it progresses</ul><p><a
name="parameter-list" title="Google Web History RSS Parameters" alt="Google Web History RSS Parameters"></a><br
/><h3>Google Web History RSS Parameters</h3><p>Here&#8217;s the full list of RSS feed parameters of which I&#8217;m now aware, including additional ones Naka mentioned:</p><ul><li><b>num</b>: Number of records to output (1000 is the most you can get a time)<li><b>start</b>: The record number starting point (starting from 1) &#8212; Note, using <b>num</b>=1000 and incrementing the <b>start</b> parameter by 1000 will only get you so far (to about 4k records or so)<li><b>month</b>: 2-digit month<li><b>day</b>: 2-digit day of the month<li><b>yr</b>: 4-digit year<li><b>max</b>: Some kind of modified UNIX timestamp or something &#8212; Not particularly useful without fully understanding what it is, and it appears to have some of the same limitations as <b>start</b><li><b>st=web</b>: Limit to web search<li><b>st=img</b>: Limit to image search<li><b>st=frg</b>: Limit to product (formerly known as Froogle) search<li><b>st=ad</b>: Limit to sponsored ad links<li><b>st=vid</b>: Limit to video search<li><b>st=maps</b>: Limit to map search<li><b>st=blogs</b>: Limit to blog search<li><b>st=books</b>: Limit to book search<li><b>st=news</b>: Limit to news search</ul><p><a
name="technical-info" title="Additional Technical Information" alt="Additional Technical Information"></a><br
/><h3>Additional Technical Information</h3><p>The new version of my script starts off by downloading the first 1000 records as it did before.  However, from that point on, it loads the next 1000 records by setting the <b>yr</b>, <b>month</b>, and <b>day</b> parameters to the date of the 1000th entry.  I did run into some odd problems with consecutive days with a lot of history.</p><p>In a few instances on days with a lot of history, the script would obtain the date of the 1000th record to load the next 1000.  However, instead of starting on that day, it would start on the prior day.  Then the original day would be the 1000th record again, and the script would end up in an infinite loop.</p><p>For example, when the starting date for the feed was set to July 1, 2009, the date of the 1000th record for that request was June 30, 2009.  However, when the RSS feed  parameters <b>yr=2009&#038;month=06&#038;day=30</b> were used to load records starting from June 30, the RSS feed once again started with July 1.  This resulted in an infinite loop, because the date of the 1000th record was June 30, 2009 and the feed parameters were being set to <b>yr=2009&#038;month=06&#038;day=30</b> over and over again.</p><p>To avoid this infinite loop, I put in some checks for the prior date that was loaded and if it is the same as the 1000th entry, it decrements the date by a day.  Unfortunately, this could potentially result in some records in the download being lost.  However, this is a lot better than an infinite loop.  Fortunately, the occurrence of this problem appears to be seldom.  The code also checks for repeat history entries (by checking the date/time), to avoid duplicity in the results.</p> 
<p><a href="http://feedads.g.doubleclick.net/~a/UoLMRwT3zrH6Dc6JP6FfKjYHETo/0/da"><img src="http://feedads.g.doubleclick.net/~a/UoLMRwT3zrH6Dc6JP6FfKjYHETo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/UoLMRwT3zrH6Dc6JP6FfKjYHETo/1/da"><img src="http://feedads.g.doubleclick.net/~a/UoLMRwT3zrH6Dc6JP6FfKjYHETo/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=hjMHuf-HS-I:VCnLPyui514:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=hjMHuf-HS-I:VCnLPyui514:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=hjMHuf-HS-I:VCnLPyui514:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=hjMHuf-HS-I:VCnLPyui514:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=hjMHuf-HS-I:VCnLPyui514:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=hjMHuf-HS-I:VCnLPyui514:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=hjMHuf-HS-I:VCnLPyui514:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=hjMHuf-HS-I:VCnLPyui514:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/GeekLad/~4/hjMHuf-HS-I" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://geeklad.com/updated-script-to-download-google-history/feed</wfw:commentRss> <slash:comments>46</slash:comments> <feedburner:origLink>http://geeklad.com/updated-script-to-download-google-history</feedburner:origLink></item> <item><title>SQL First Function Equivalent in SQL Server and Oracle</title><link>http://feeds.geeklad.com/~r/GeekLad/~3/eBHa9RJUC3c/sql-first-function</link> <comments>http://geeklad.com/sql-first-function#comments</comments> <pubDate>Sat, 18 Feb 2012 21:01:47 +0000</pubDate> <dc:creator>GeekLad</dc:creator> <category><![CDATA[Programming]]></category> <category><![CDATA[SQL]]></category><guid isPermaLink="false">http://geeklad.com/?p=3008</guid> <description><![CDATA[Microsoft Access is nice for quick and dirty manipulation of data and merging data sets.  It also has a lot of nice functions you won&#8217;t find in other versions of SQL.  One of these functions is the First() function.  Although not available in Microsoft SQL Server or [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://geeklad.com/wp-content/uploads/2012/02/sql.png?cda6c1" alt="" title="SQL Logo" width="200" height="111" class="alignleft size-full wp-image-3009" border="0 none;" />Microsoft Access is nice for quick and dirty manipulation of data and merging data sets.  It also has a lot of nice functions you won&#8217;t find in other versions of SQL.  One of these functions is the <b>First()</b> function.  Although not available in Microsoft SQL Server or Oracle, it can be emulated by other means.</p><p><span
id="more-3008"></span>The trick is to use the <b>RANK()</b> and <b>OVER</b> clauses.  When combined together, RANK() and OVER can perform aggregation in a query without having to use the GROUP BY clause.  This allows you to obtain aggregation information for individual rows in a result.  Unfortunately, this does not work in MySQL, but it does work in both Oracle and T-SQL (transact SQL, which is what MS SQL Server uses).</p><p>For example, let&#8217;s say you have the following table called <i>employees</i>:</p><table><tr><th>Row</th><th>Department</th><th>Employee_Name</th><th>Salary</th></tr><tr><td>1</td><td>HR</td><td>John Smith</td><td>32500</td></tr><tr><td>2</td><td>HR</td><td>Jane Doe</td><td>18350</td></tr><tr><td>3</td><td>HR</td><td>Mike Smith</td><td>42730</td></tr><tr><td>4</td><td>IT</td><td>Ben Dover</td><td>50370</td></tr><tr><td>5</td><td>IT</td><td>Anita Mann</td><td>90450</td></tr><tr><td>6</td><td>IT</td><td>Joe King</td><td>30920</td></tr><tr><td>7</td><td>Operations</td><td>Justin Case</td><td>18350</td></tr><tr><td>8</td><td>Operations</td><td>Kandi Barr</td><td>43290</td></tr><tr><td>9</td><td>Operations</td><td>Hugo First</td><td>80500</td></tr></table><p>You want to select only those individuals that have the highest salary, by department.  In MS Access, you could do this with the <b>First()</b> function:</p><pre class="brush: sql">

SELECT
	Department,
	First(Employee_Name) as Employee_Name,
	First(Salary) as Salary
FROM
	(SELECT
		*
	FROM
		employees
	ORDER BY
		Department,
		Salary DESC
	) AS [Ordered Salaries]
GROUP BY
	Department
</pre><p>This will create an inner query that sorts by department and then descending salary.  The outer query groups by department and selects the first salary and name.  Because the inner query is sorted, the <b>First()</b> function returns the employee with the highest salary for each department.</p><p>You can simulate the First() function in SQL Server and Oracle, with RANK() OVER.  Here is what the inner query would look like in SQL Server (T-SQL):</p><pre class="brush: sql">

SELECT
	employees.Department,
	employees.Employee_Name,
	employees.Salary,
	RANK() OVER(PARTITION BY Department ORDER BY Salary DESC) AS Ranking
FROM
	employees
</pre><p>This query would return:</p><table><tr><th>Department</th><th>Employee_Name</th><th>Salary</th><th>Ranking</th></tr><tr><td>HR</td><td>John Smith</td><td>32500</td><td>2</td></tr><tr><td>HR</td><td>Jane Doe</td><td>18350</td><td>3</td></tr><tr><td>HR</td><td>Mike Smith</td><td>42730</td><td>1</td></tr><tr><td>IT</td><td>Ben Dover</td><td>50370</td><td>2</td></tr><tr><td>IT</td><td>Anita Mann</td><td>90450</td><td>1</td></tr><tr><td>IT</td><td>Joe King</td><td>30920</td><td>3</td></tr><tr><td>Operations</td><td>Justin Case</td><td>18350</td><td>3</td></tr><tr><td>Operations</td><td>Kandi Barr</td><td>43290</td><td>2</td></tr><tr><td>Operations</td><td>Hugo First</td><td>80500</td><td>1</td></tr></table><p>Notice how the RANK() OVER(PARTITION BY) clause provides aggregated information for rows in the result, without having to use the GROUP BY clause.  This can be a very powerful tool, especially considering that other aggregation functions such as MIN(), MAX(), SUM(), etc. can be used with OVER(PARTITION BY).</p><p>You can probably already see where this is going.  The <b>PARTITION BY Department</b> portion of the query aggregates the table by department, and the results are then ordered descending by salary.</p><p>To get the final result we desire, all we need to do is select the rows of the inner query where the Ranking is 1.  Here&#8217;s what the final query looks like:</p><pre class="brush: sql">

SELECT
	Department, Name, Salary
FROM
	(SELECT
		employees.Department,
		employees.Name,
		employees.Salary,
		RANK() OVER(PARTITION BY Department ORDER BY Salary Desc) AS Ranking
	FROM
		employees
	) AS [Ranked Salaries]
WHERE
	Ranking = 1
GROUP BY
	Department
</pre><p>And the final result:</p><table><tr><th>Department</th><th>Employee_Name</th><th>Salary</th></tr><tr><td>HR</td><td>Mike Smith</td><td>42730</td></tr><tr><td>IT</td><td>Anita Mann</td><td>90450</td></tr><tr><td>Operations</td><td>Hugo First</td><td>80500</td></tr></table><p>Although the First() function may be a bit more intuitive in Access, emulating it with RANK() OVER(PARTITION BY) works just as well.  The syntax for Oracle PL/SQL is exactly the same:</p><pre class="brush: sql">

RANK() OVER(PARTITION BY Some_Column ORDER BY Some_Other_Column)
</pre><p>You just need to put the column(s) you want to group after the PARTITION BY and then sort the data accordingly.  After you use it a few times, you&#8217;ll get the hang of it.  You can also use this method to obtain the top results for a category.  You would simply just select records with a ranking greater than or equal to the top number of results you want to see.  Perhaps that will be another tutorial for another time.</p> 
<p><a href="http://feedads.g.doubleclick.net/~a/62nRwGQYslCrehGejhGJEotSrGc/0/da"><img src="http://feedads.g.doubleclick.net/~a/62nRwGQYslCrehGejhGJEotSrGc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/62nRwGQYslCrehGejhGJEotSrGc/1/da"><img src="http://feedads.g.doubleclick.net/~a/62nRwGQYslCrehGejhGJEotSrGc/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=eBHa9RJUC3c:nm--bG5-0DQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=eBHa9RJUC3c:nm--bG5-0DQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=eBHa9RJUC3c:nm--bG5-0DQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=eBHa9RJUC3c:nm--bG5-0DQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=eBHa9RJUC3c:nm--bG5-0DQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=eBHa9RJUC3c:nm--bG5-0DQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=eBHa9RJUC3c:nm--bG5-0DQ:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=eBHa9RJUC3c:nm--bG5-0DQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/GeekLad/~4/eBHa9RJUC3c" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://geeklad.com/sql-first-function/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://geeklad.com/sql-first-function</feedburner:origLink></item> <item><title>Copy Lyrics in Pandora to Clipboard</title><link>http://feeds.geeklad.com/~r/GeekLad/~3/xpGVDp3De80/copy-pandora-lyrics</link> <comments>http://geeklad.com/copy-pandora-lyrics#comments</comments> <pubDate>Tue, 14 Feb 2012 10:00:18 +0000</pubDate> <dc:creator>GeekLad</dc:creator> <category><![CDATA[Internet]]></category> <category><![CDATA[JavaScript]]></category><guid isPermaLink="false">http://geeklad.com/?p=2995</guid> <description><![CDATA[Today I wanted to follow along in the lyrics with a tune I was enjoying on Pandora, so I searched for the last word in the song I heard.  The browser scrolled to the section of the song where the word was located, however, the word was not highlighted. [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://geeklad.com/wp-content/uploads/2012/02/pandora-logo.jpg?cda6c1" alt="" title="pandora-logo" width="259" height="194" class="alignleft size-full wp-image-2996" style="border: 0 none;" />Today I wanted to follow along in the lyrics with a tune I was enjoying on Pandora, so I searched for the last word in the song I heard.  The browser scrolled to the section of the song where the word was located, however, the word was not highlighted.  I tried to select the lyrics, and was annoyed to find the lyrics were not selectable.  It was then time for a little JavaScript magic to make it possible to select, copy, and paste the lyrics.</p><p><span
id="more-2995"></span>Fortunately, the Pandora website uses <a
href="http://jquery.com/">jQuery</a>, which makes it stupid easy to re-enable the ability to select &#038; copy the lyrics in a single statement.  If you want to do the same, just drag this bookmarklet to your bookmark bar:</p><p><p
style="text-align: center;"><a
style="border: 1px solid #888888; padding: 4px 8px; font-weight: bold;" title="Copy Pandora Lyrics" href='javascript:void(function(){$("div[class^='lyricsText']").attr({class: "lyricsText", unselectable: "off", onmousedown: null, onclick: null, ondragstart: null, onselectstart: null, onmouseover: null})})();'>Copy Pandora Lyrics</a></p></p><p>Here&#8217;s the JavaScript code that makes this possible:</p><pre class="brush: js">
$("div[class^='lyricsText']").attr({
	class: "lyricsText",
	unselectable: "off",
	onmousedown: null,
	onclick: null,
	ondragstart: null,
	onselectstart: null,
	onmouseover: null
});
</pre><p>All it does is find the &lt;div&gt; tag in the HTML that contains the lyrics and disables all the things that disable the selection of the lyrics text.  That&#8217;s a lot of disabling!  Put another way, it re-enables the selection of they lyrics. <img
src="http://geeklad.com/wp-includes/images/smilies/icon_smile.gif?cda6c1" alt=':)' class='wp-smiley' /></p> 
<p><a href="http://feedads.g.doubleclick.net/~a/FeUdYPDI2mLhjt83s88e7BmUmQI/0/da"><img src="http://feedads.g.doubleclick.net/~a/FeUdYPDI2mLhjt83s88e7BmUmQI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/FeUdYPDI2mLhjt83s88e7BmUmQI/1/da"><img src="http://feedads.g.doubleclick.net/~a/FeUdYPDI2mLhjt83s88e7BmUmQI/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=xpGVDp3De80:Ho8blTQFRBk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=xpGVDp3De80:Ho8blTQFRBk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=xpGVDp3De80:Ho8blTQFRBk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=xpGVDp3De80:Ho8blTQFRBk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=xpGVDp3De80:Ho8blTQFRBk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=xpGVDp3De80:Ho8blTQFRBk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=xpGVDp3De80:Ho8blTQFRBk:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=xpGVDp3De80:Ho8blTQFRBk:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/GeekLad/~4/xpGVDp3De80" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://geeklad.com/copy-pandora-lyrics/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://geeklad.com/copy-pandora-lyrics</feedburner:origLink></item> <item><title>Find Free WordPress Themes with Google Image Search</title><link>http://feeds.geeklad.com/~r/GeekLad/~3/fsktYR_vdK4/find-free-wordpress-themes-with-google-image-search</link> <comments>http://geeklad.com/find-free-wordpress-themes-with-google-image-search#comments</comments> <pubDate>Mon, 13 Feb 2012 10:00:26 +0000</pubDate> <dc:creator>GeekLad</dc:creator> <category><![CDATA[Blogging]]></category> <category><![CDATA[wordpress themes]]></category><guid isPermaLink="false">http://geeklad.com/?p=2957</guid> <description><![CDATA[The other day, I helped my friend set up a new recipe blog on WordPress.  We were looking for a good cooking or food WordPress theme, but the built-in WordPress theme search wasn&#8217;t yielding a whole lot of results.  When I searched on Google, I noticed the section [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://geeklad.com/wp-content/uploads/2012/02/wordpress-logo.png?cda6c1" alt="" title="wordpress-logo" width="150" height="150" class="alignleft size-full wp-image-2773" style="border: 0 none;" />The other day, I helped my friend set up a new <a
href="http://adlibrecipe.com" title="recipe website">recipe blog</a> on WordPress.  We were looking for a good cooking or food WordPress theme, but the built-in WordPress theme search wasn&#8217;t yielding a whole lot of results.  When I searched on Google, I noticed the section for Google Image results had a lot of thumbnails for WordPress themes.  I then viewed the Google Image search results, and I was amazed how many of the results were thumbnails of WordPress blog themes.</p><p><span
id="more-2957"></span>Here&#8217;s what the results look like when you search Google images for <i>free wordpress theme cooking</i>:</p><p><a
rel="lightbox[a]" href="http://geeklad.com/wp-content/uploads/2012/02/free-wordpress-theme-google-image-search-example.png?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/02/free-wordpress-theme-google-image-search-example-300x146.png?cda6c1" alt="" title="free wordpress theme google image search example" width="300" height="146" class="aligncenter size-medium wp-image-2965" /></a></p><p>You can see in the screenshot that just about every single image result is a WordPress theme.  It&#8217;s a great way to see a ton of thumbnails all at once, rather than trying to search Google and view page after page, before finally finding the right theme for you.  I decided to take it a step further, and create a custom <a
href="http://geeklad.com/free-wordpress-theme-search-engine" title="Free WordPress Theme Search Engine">search engine for WordPress themes</a>.</p><p>I had to do a little digging through the <a
href="http://code.google.com/apis/customsearch/docs/js/cselement-reference.html">JavaScript API reference for Google Custom Search engines</a> to get it set up just right.  When I finished with it, I was able to set it up so that the results would automatically take you to images and include <b>free wordpress theme</b> as part of the search query.  Here&#8217;s what my WordPress theme search looks like when you search for <b><a
href="http://geeklad.com/free-wordpress-theme-search-engine?q=sports%20cars" title="Sports Cars WordPress themes">sports cars</a></b>:</p><p><a
rel="lightbox[a]" href="http://geeklad.com/wp-content/uploads/2012/02/free-wordpress-theme-search-engine-results-example.png?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/02/free-wordpress-theme-search-engine-results-example-300x234.png?cda6c1" alt="" title="free wordpress theme search engine results example" width="300" height="234" class="aligncenter size-medium wp-image-2968" /></a></p><p>I&#8217;ve set up the search engine page to accept parameters as well.  For example, say you have a friend who is a money manager, you might send him to visit <a
href="http://geeklad.com/free-wordpress-theme-search-engine?q=finance" title="free finance WordPress themes">http://geeklad.com/free-wordpress-theme-search-engine?q=finance</a> for WordPress themes related to finance.</p> 
<p><a href="http://feedads.g.doubleclick.net/~a/0iERflyMR93DUAfel-g45zlejZQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/0iERflyMR93DUAfel-g45zlejZQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/0iERflyMR93DUAfel-g45zlejZQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/0iERflyMR93DUAfel-g45zlejZQ/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=fsktYR_vdK4:nFh7lj4hd9Y:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=fsktYR_vdK4:nFh7lj4hd9Y:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=fsktYR_vdK4:nFh7lj4hd9Y:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=fsktYR_vdK4:nFh7lj4hd9Y:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=fsktYR_vdK4:nFh7lj4hd9Y:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=fsktYR_vdK4:nFh7lj4hd9Y:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=fsktYR_vdK4:nFh7lj4hd9Y:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=fsktYR_vdK4:nFh7lj4hd9Y:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/GeekLad/~4/fsktYR_vdK4" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://geeklad.com/find-free-wordpress-themes-with-google-image-search/feed</wfw:commentRss> <slash:comments>2</slash:comments> <feedburner:origLink>http://geeklad.com/find-free-wordpress-themes-with-google-image-search</feedburner:origLink></item> <item><title>Updated CyanogenMod 9 Ice Cream Sandwich for EVO 3D (CM9 ICS)</title><link>http://feeds.geeklad.com/~r/GeekLad/~3/AxeigevD5MA/updated-cyanogenmod-9-ice-cream-sandwich-for-evo-3d-cm9-ics</link> <comments>http://geeklad.com/updated-cyanogenmod-9-ice-cream-sandwich-for-evo-3d-cm9-ics#comments</comments> <pubDate>Sun, 12 Feb 2012 16:20:13 +0000</pubDate> <dc:creator>GeekLad</dc:creator> <category><![CDATA[Android]]></category> <category><![CDATA[CyanogenMod]]></category> <category><![CDATA[Ice Cream Sandwich]]></category><guid isPermaLink="false">http://geeklad.com/?p=2977</guid> <description><![CDATA[Android hacker/developer JoelZ9614 has released an updated version of his CyanogenMod 9 Ice Cream Sandwich ROM for the CDMA EVO 3D!  It was released at about 9pm UTC on Saturday, February 11, 2012 (2:19am EST on Sunday, February 12, 2012).  I&#8217;ve installed the ROM to check it out, [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://geeklad.com/wp-content/uploads/2012/01/ics-logo.png?cda6c1" alt="" title="Ice Cream Sandwich logo" width="300" height="225" class="alignleft size-full wp-image-2677" />Android hacker/developer JoelZ9614 has released an updated version of his CyanogenMod 9 Ice Cream Sandwich ROM for the CDMA EVO 3D!  It was released at about 9pm UTC on Saturday, February 11, 2012 (2:19am EST on Sunday, February 12, 2012).  I&#8217;ve installed the ROM to check it out, and it seems the video glitching has been fixed, which definitely makes it a better build than the last.</p><p><span
id="more-2977"></span><br
/><br
/><br
/><br
/><br
/>Of course, being a beta build, not everything is 100% working.  Major functionality that is still not working:</p><ul><li>Full hardware acceleration (video playback does not work)<li>Cameras<li>3D<li>4G<li>USB mass storage<li>Google+ and Google Talk</ul><p>If any of these are dealbreakers for you, this probably won&#8217;t be a daily driver.  If you install Gapps (Google Applications), you may experience problems with Talk and Google+.  I could not get them to work properly.  Talk crashes when trying to connect, and Google+ goes into an endless loop between saying <b>Signing in&#8230;</b> and then it pops up a dialog that says <strong>Couldn&#8217;t connect to the server.</strong></p><p>I haven&#8217;t tested all apps, so there may certainly be issues with others as well.  You can download this build of CyanogenMod 9 for the EVO 3D at</p><h4><a
href="http://www.androidfilehost.com/main/EVO_3D_Developers/Joel/ROMS/Cm9/">http://www.androidfilehost.com/main/EVO_3D_Developers/Joel/ROMS/Cm9/</a></h4><p>The discussion thread is here:</p><h4><a
href="http://forum.xda-developers.com/showthread.php?t=1493082">http://forum.xda-developers.com/showthread.php?t=1493082</a></h4> 
<p><a href="http://feedads.g.doubleclick.net/~a/jwf-xn8n0_-5Og1-qkERpMTtzRY/0/da"><img src="http://feedads.g.doubleclick.net/~a/jwf-xn8n0_-5Og1-qkERpMTtzRY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/jwf-xn8n0_-5Og1-qkERpMTtzRY/1/da"><img src="http://feedads.g.doubleclick.net/~a/jwf-xn8n0_-5Og1-qkERpMTtzRY/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=AxeigevD5MA:YiWcx4hw3zc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=AxeigevD5MA:YiWcx4hw3zc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=AxeigevD5MA:YiWcx4hw3zc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=AxeigevD5MA:YiWcx4hw3zc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=AxeigevD5MA:YiWcx4hw3zc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=AxeigevD5MA:YiWcx4hw3zc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=AxeigevD5MA:YiWcx4hw3zc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=AxeigevD5MA:YiWcx4hw3zc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/GeekLad/~4/AxeigevD5MA" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://geeklad.com/updated-cyanogenmod-9-ice-cream-sandwich-for-evo-3d-cm9-ics/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://geeklad.com/updated-cyanogenmod-9-ice-cream-sandwich-for-evo-3d-cm9-ics</feedburner:origLink></item> <item><title>Download Google Web History</title><link>http://feeds.geeklad.com/~r/GeekLad/~3/mfakvoMEnU4/download-google-history</link> <comments>http://geeklad.com/download-google-history#comments</comments> <pubDate>Sat, 11 Feb 2012 19:46:09 +0000</pubDate> <dc:creator>GeekLad</dc:creator> <category><![CDATA[Internet]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Google Web History]]></category><guid isPermaLink="false">http://geeklad.com/?p=2829</guid> <description><![CDATA[Although Google does provide access to easily download some Google Account data, they do not provide direct access to download your entire Google Web History.  I did a bit of research, and although you can access it via an RSS feed 1000 records at a time, it can still [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://geeklad.com/wp-content/uploads/2008/11/google-logo.png?cda6c1" alt="" title="google-logo" width="160" height="58" class="alignleft size-full wp-image-619" style="border: 0 none;" />Although Google does provide access to easily <a
href="https://www.google.com/settings/exportdata">download some Google Account data</a>, they do not provide direct access to download your entire Google Web History.  I did a bit of research, and although you can <a
href="http://ask.metafilter.com/160288/Download-Google-Web-History">access it via an RSS feed 1000 records at a time</a>, it can still be difficult and time consuming to obtain in its entirety.  I took it upon myself to develop a simple solution that combines all of the RSS feed files into a single, downloadable CSV file.</p><p><span
id="more-2829"></span><i><b>Update</b>: I&#8217;ve updated the script and added some enhancements.  Find out more in my <a
href="http://geeklad.com/updated-script-to-download-google-history">updates to the Google History download script</a>.</i></p><p><a
name="privacy-info" title="Privacy Info" alt="Privacy Info"></a><br
/><h3>Privacy Info</h3><p>First of all, let me put your mind at rest by informing you that my solution will not do anything malicious with your Google Account or your Google Web History:</p><blockquote><p>This solution works all within your browser.   None of your Google Account data or history is transmitted or received to any server, other than Google&#8217;s servers.  This tool downloads your Google Distory directly from Google to your computer and your browser.  The <a
href="http://geeklad.com/tools/google-history/google-history.js?cda6c1">source code for my bookmarklet</a> is freely available to download, review, and modify, under the <a
href="http://www.gnu.org/licenses/gpl.html">GPL v3</a>.</p><p>I do not want the liability nor the responsibility of handling anyone else&#8217;s private Google Account data, so priority number one for me in developing this tool was that it all had to work on the client-side, without having to pass the data through any servers.  I know that if I were to use a third-party solution, I would only use a solution constructed in the manner I built mine, and I&#8217;m sure most other people feel the same way.</p><p>If you would prefer not to use this tool and manually download your Google Web History, scroll down to the <a
href="#technical-details" title="how to manually download Google Web History">Technical Details</a> section for information on how to do this.</p></blockquote><p><a
name="usage" title="Usage" alt="Usage"></a><br
/><h3>Usage</h3><p>You&#8217;ll need flash in order to use this tool.  It makes use of a library that uses a small Flash movie to convert the downloaded data into a file, within the browser  (read the <a
href="#technical-details">technical details</a> for more info).   To use it simply <b>drag and drop this bookmarklet onto your web browser&#8217;s bookmark bar</b>:</p><p><p
style="text-align: center;"><a
style="border: 1px solid #888888; padding: 4px 8px; font-weight: bold;" title="Download Google Web History" href='javascript:void(function(){s=document.createElement("script");s.src="http://geeklad.com/tools/google-history/google-history.js?cda6c1";document.body.appendChild(s);})();'>Download Google Web History</a></p></p><p>If you&#8217;re using Internet Exploder (I feel sorry for you), you may receive a warning about the bookmarklet loading insecure content.  This is because it will download a JavaScript file from geeklad.com, and load it into the current webpage.  Just click <b>Yes</b> to proceed with adding the bookmark.</p><p><a
rel="lightbox[download-history]" href="http://geeklad.com/wp-content/uploads/2012/02/Internet-Explorer-Bookmarklet-Warning.png?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/02/Internet-Explorer-Bookmarklet-Warning-300x180.png?cda6c1" alt="" title="Internet-Explorer-Bookmarklet-Warning" width="300" height="180" class="aligncenter size-medium wp-image-2907" /></a></p><p>Next, <b>visit your <a
href="https://www.google.com/history/">Google Web History</a></b>.  Unless you&#8217;ve visited it during your current browser session or have previously set up your browser to remember your computer for accessing your history, you&#8217;ll be asked for your Google Account password.</p><p>After you log in, click on the <b>Download Google Web History</b> bookmark you just created.  If you&#8217;re using Internet Explorer or Google Chrome, the browser will warn you that the page has insecure content. <b>Load Anyway</b>, which will refresh the page, and then you&#8217;ll have to <b>click the bookmark again</b>.</p><div
id="attachment_2908" class="wp-caption aligncenter" style="width: 310px"><a
rel="lightbox[download-history]" href="http://geeklad.com/wp-content/uploads/2012/02/Internet-Explorer-Second-Bookmarklet-Warning.png?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/02/Internet-Explorer-Second-Bookmarklet-Warning-300x25.png?cda6c1" alt="The second bookmarklet warning you might see in Internet Explorer" title="The second bookmarklet warning you might see in Internet Explorer" width="300" height="25" class="size-medium wp-image-2908" /></a><p
class="wp-caption-text">The second bookmarklet warning you might see in Internet Explorer</p></div><div
id="attachment_2845" class="wp-caption aligncenter" style="width: 310px"><a
rel="lightbox[download-history]" href="http://geeklad.com/wp-content/uploads/2012/02/download-google-history.png?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/02/download-google-history-300x115.png?cda6c1" alt="This is the security warning you&#039;ll see in Google Chrome" title="This is the security warning you&#039;ll see in Google Chrome" width="300" height="115" class="size-medium wp-image-2845" /></a><p
class="wp-caption-text">This is the security warning you&#039;ll see in Google Chrome</p></div><p>I do not believe Firefox has this security check, and I&#8217;m not sure about Safari.  In either case, if you do see a security warning, allow the page to reload and then click the bookmark once again.  Next, you should see the page darken, and a box appear informing you that your history is being downloaded.</p><p>Prepare yourself for a long wait if you have an extensive history.  To give you an idea, <strong>my history has over 44k searches and my tool downloaded over 135k records and the CSV file was about 28MB!</strong> If you get sick of waiting, you can click the cancel button (<em>you can see what it looks like in my <a
href="http://geeklad.com/updated-script-to-download-google-history#usage">update post</a>, the screenshot below is out-of-date</em>) and download what has been done so far.</p><p>Eventually, all of your history will be downloaded and you will be presented with some search statistics and a button to download to a <a
href="http://en.wikipedia.org/wiki/Comma-separated_values">CSV file</a>.</p><p><a
rel="lightbox[download-history]" href="http://geeklad.com/wp-content/uploads/2012/02/downloading-google-history1.png?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/02/downloading-google-history1-300x170.png?cda6c1" alt="" title="downloading-google-history" width="300" height="170" class="aligncenter size-medium wp-image-2855" /></a></p><p><a
rel="lightbox[download-history]" href="http://geeklad.com/wp-content/uploads/2012/02/downloaded-google-history.png?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/02/downloaded-google-history-300x249.png?cda6c1" alt="" title="downloaded-google-history" width="300" height="249" class="aligncenter size-medium wp-image-2852" /></a></p><p><i><b>Update</b>: More info on usage is available in the usage section of the latest update on this script to <a
href="http://geeklad.com/updated-script-to-download-google-history#usage">download Google History</a>.</i></p><p><a
name="shared-computers" title="Shared Computers" alt="Shared Computers"></a><br
/><h3>Shared Computers</h3><p>If you share your computer with others, there is something of which you should be made aware.  If you configure the browser to keep you logged into your Google Account, you will see the history generated by anyone using the computer (unless they log you out).  When you see a bunch of searches for knitting needles, quilting, and dentures, don&#8217;t be alarmed and suspect an octogenarian of having hacked your Google account.  It&#8217;s only Grandma surfing on your computer while logged into your Google Account.</p><p>If you do not even want the temptation of seeing what websites the others around you are visiting and what they are searching (good for you), make sure to <b>always log out of your Google account when you&#8217;re done using the computer</b>.  Alternatively, you could just make sure to never check the &#8220;remember me&#8221; checkbox when you log into your Gmail, Google+, Google Docs, Google Reader, or any other Google services.  That&#8217;s generally good practice anyway, when using a shared computer.</p><p>If you do decide to use my tool for evil, such as spying on your significant other or siblings, shame on you!  That is not the purpose for which I&#8217;ve intended this tool to be used.  That being said, I&#8217;m sure this tool will see its fair share of abuse.</p><p>If you don&#8217;t want anyone else using my tool to spy on you, <strong>don&#8217;t ever give your Google Account password to anyone</strong>.  In order to access your Google Web History, you will be prompted for your password even if you&#8217;re logged into your Google account.  This is a good thing, because if anyone wants to see your Google History or use my tool, they would need your Google Account password.</p><p><a
name="technical-details" title="Google Web History RSS Feed Info" alt="Google Web History RSS Feed Info"></a><a
name="technical-details" title="Technical Details" alt="Technical Details"></a><br
/><h3>Technical Details</h3><p><i><b>Update</b>: There are some additional <a
href="http://geeklad.com/updated-script-to-download-google-history#technical-info">technical details on the Google Web History RSS feed</a> in my latest update.</i></p><p>When I was searching for this solution myself, I discovered that there is an RSS feed of your history that can be viewed at <a
href="https://www.google.com/history/lookup?q=&#038;output=rss&#038;num=1000&#038;start=1" title="Google Web History RSS feed URL">https://www.google.com/history/lookup?q=&#038;output=rss&#038;num=1000&#038;start=1</a>.  The <b>num</b> parameters indicates how many records you want to view at once, and <b>start</b> parameter which record you want to start at.</p><p>You can download 1000 records at a time.  If you wanted to manually download it, you could save the output of these links:</p><ul><li><a
href="https://www.google.com/history/lookup?q=&#038;output=rss&#038;num=1000&#038;start=1">https://www.google.com/history/lookup?q=&#038;output=rss&#038;num=1000&#038;start=1</a><li><a
href="https://www.google.com/history/lookup?q=&#038;output=rss&#038;num=1000&#038;start=1001">https://www.google.com/history/lookup?q=&#038;output=rss&#038;num=1000&#038;start=1001</a><li><a
href="https://www.google.com/history/lookup?q=&#038;output=rss&#038;num=1000&#038;start=2001">https://www.google.com/history/lookup?q=&#038;output=rss&#038;num=1000&#038;start=2001</a><li><a
href="https://www.google.com/history/lookup?q=&#038;output=rss&#038;num=1000&#038;start=3001">https://www.google.com/history/lookup?q=&#038;output=rss&#038;num=1000&#038;start=3001</a><li><a
href="https://www.google.com/history/lookup?q=&#038;output=rss&#038;num=1000&#038;start=4001">https://www.google.com/history/lookup?q=&#038;output=rss&#038;num=1000&#038;start=4001</a><li><a
href="https://www.google.com/history/lookup?q=&#038;output=rss&#038;num=1000&#038;start=5001">https://www.google.com/history/lookup?q=&#038;output=rss&#038;num=1000&#038;start=5001</a><li>&#8230; and so on &#8230; until you finally reach a page with no &lt;item&gt; tags in it.</ul><p>Then you need to import all of the XML the files into a program to combine them into one.  You can <a
href="http://office.microsoft.com/en-us/excel-help/import-xml-data-HP010206405.aspx">do this with the latest version of Microsoft Excel</a>.  I was initially going to go down this route.  However, decided it would be worthwhile to build a tool to automatically do this since others may want the same convenience of downloading their entire Google Web History in a single CSV file.</p><p>Another technical detail I&#8217;d like to share is that this tool uses a very nice JavaScript library called <a
href="https://github.com/dcneiner/Downloadify">Downloadify</a>.  Downloadify provides the magic that allows it to generate a CSV file without having to pass your data through a third-party server.  It does this through a small Flash program that takes a string as an input, creates the download button, and then creates a dialog box to download the string into a file when you click the download button.</p> 
<p><a href="http://feedads.g.doubleclick.net/~a/NpY9qFw3-R1YLVxhu-dmq-R-fhs/0/da"><img src="http://feedads.g.doubleclick.net/~a/NpY9qFw3-R1YLVxhu-dmq-R-fhs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/NpY9qFw3-R1YLVxhu-dmq-R-fhs/1/da"><img src="http://feedads.g.doubleclick.net/~a/NpY9qFw3-R1YLVxhu-dmq-R-fhs/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=mfakvoMEnU4:DIT-EITIMxo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=mfakvoMEnU4:DIT-EITIMxo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=mfakvoMEnU4:DIT-EITIMxo:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=mfakvoMEnU4:DIT-EITIMxo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=mfakvoMEnU4:DIT-EITIMxo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=mfakvoMEnU4:DIT-EITIMxo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=mfakvoMEnU4:DIT-EITIMxo:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=mfakvoMEnU4:DIT-EITIMxo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/GeekLad/~4/mfakvoMEnU4" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://geeklad.com/download-google-history/feed</wfw:commentRss> <slash:comments>9</slash:comments> <feedburner:origLink>http://geeklad.com/download-google-history</feedburner:origLink></item> <item><title>Remove Stop Words in JavaScript</title><link>http://feeds.geeklad.com/~r/GeekLad/~3/a2uYMnQc6dE/remove-stop-words-in-javascript</link> <comments>http://geeklad.com/remove-stop-words-in-javascript#comments</comments> <pubDate>Fri, 10 Feb 2012 02:34:27 +0000</pubDate> <dc:creator>GeekLad</dc:creator> <category><![CDATA[Programming]]></category> <category><![CDATA[JavaScript]]></category><guid isPermaLink="false">http://geeklad.com/?p=2810</guid> <description><![CDATA[Sometimes it may be useful to remove stop words from strings, when parsing data in JavaScript.  I found myself in that situation with a recent project.  I looked around for a String method to do this, but didn&#8217;t have much luck, so I wrote my own.
Stop words are [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://geeklad.com/wp-content/uploads/2012/02/script.png?cda6c1" alt="" title="script" width="200" height="160" class="alignleft size-full wp-image-2813" style="border: 0 none;" />Sometimes it may be useful to remove stop words from strings, when parsing data in JavaScript.  I found myself in that situation with a recent project.  I looked around for a String method to do this, but didn&#8217;t have much luck, so I wrote my own.</p><p><span
id="more-2810"></span>Stop words are typically things like conjunctions, prepositions, etc.  Typically, a developer would want to remove stop words from a string, in order to extract keywords from it.  I found a <a
href="http://www.lextek.com/manuals/onix/stopwords1.html">stop word list</a> after a quick search, and used it in my method.  The method I wrote actually extends the JavaScript String data type, so it can be applied to any string.  You just have to be sure to define the prototype method before calling it.</p><p>Once you&#8217;ve defined it, you just call the method like this:</p><pre class="brush: javascript; gutter: false;">
foo = "here is a string that has some stop words in it";
bar = foo.removeStopWords();
// The value of bar will be "string stop words"
</pre><p>The method works by first defining a very large array with stop words in it.  The string itself is split by whitespaces within the string, creating an array of contiguous non-whitespace characters.  There are then two loops for processing the words.</p><p>The outer loop cycles through all of the words in the string, and the inner loop cycles through all of the stop words.  The inner loop performs a comparison between the current word and current stopword.  If the word matches the stop word, all instances of it are removed from the main string.</p><p>Here&#8217;s the code:</p><pre class="brush: javascript; gutter: false;">
/*
 * String method to remove stop words
 * Written by GeekLad http://geeklad.com
 * Stop words obtained from http://www.lextek.com/manuals/onix/stopwords1.html
 *   Usage: string_variable.removeStopWords();
 *   Output: The original String with stop words removed
 */
String.prototype.removeStopWords = function() {
	var x;
	var y;
	var word;
	var stop_word;
	var regex_str;
	var regex;
	var cleansed_string = this.valueOf();
	var stop_words = new Array(
		'a',
		'about',
		'above',
		'across',
		'after',
		'again',
		'against',
		'all',
		'almost',
		'alone',
		'along',
		'already',
		'also',
		'although',
		'always',
		'among',
		'an',
		'and',
		'another',
		'any',
		'anybody',
		'anyone',
		'anything',
		'anywhere',
		'are',
		'area',
		'areas',
		'around',
		'as',
		'ask',
		'asked',
		'asking',
		'asks',
		'at',
		'away',
		'b',
		'back',
		'backed',
		'backing',
		'backs',
		'be',
		'became',
		'because',
		'become',
		'becomes',
		'been',
		'before',
		'began',
		'behind',
		'being',
		'beings',
		'best',
		'better',
		'between',
		'big',
		'both',
		'but',
		'by',
		'c',
		'came',
		'can',
		'cannot',
		'case',
		'cases',
		'certain',
		'certainly',
		'clear',
		'clearly',
		'come',
		'could',
		'd',
		'did',
		'differ',
		'different',
		'differently',
		'do',
		'does',
		'done',
		'down',
		'down',
		'downed',
		'downing',
		'downs',
		'during',
		'e',
		'each',
		'early',
		'either',
		'end',
		'ended',
		'ending',
		'ends',
		'enough',
		'even',
		'evenly',
		'ever',
		'every',
		'everybody',
		'everyone',
		'everything',
		'everywhere',
		'f',
		'face',
		'faces',
		'fact',
		'facts',
		'far',
		'felt',
		'few',
		'find',
		'finds',
		'first',
		'for',
		'four',
		'from',
		'full',
		'fully',
		'further',
		'furthered',
		'furthering',
		'furthers',
		'g',
		'gave',
		'general',
		'generally',
		'get',
		'gets',
		'give',
		'given',
		'gives',
		'go',
		'going',
		'good',
		'goods',
		'got',
		'great',
		'greater',
		'greatest',
		'group',
		'grouped',
		'grouping',
		'groups',
		'h',
		'had',
		'has',
		'have',
		'having',
		'he',
		'her',
		'here',
		'herself',
		'high',
		'high',
		'high',
		'higher',
		'highest',
		'him',
		'himself',
		'his',
		'how',
		'however',
		'i',
		'if',
		'important',
		'in',
		'interest',
		'interested',
		'interesting',
		'interests',
		'into',
		'is',
		'it',
		'its',
		'itself',
		'j',
		'just',
		'k',
		'keep',
		'keeps',
		'kind',
		'knew',
		'know',
		'known',
		'knows',
		'l',
		'large',
		'largely',
		'last',
		'later',
		'latest',
		'least',
		'less',
		'let',
		'lets',
		'like',
		'likely',
		'long',
		'longer',
		'longest',
		'm',
		'made',
		'make',
		'making',
		'man',
		'many',
		'may',
		'me',
		'member',
		'members',
		'men',
		'might',
		'more',
		'most',
		'mostly',
		'mr',
		'mrs',
		'much',
		'must',
		'my',
		'myself',
		'n',
		'necessary',
		'need',
		'needed',
		'needing',
		'needs',
		'never',
		'new',
		'new',
		'newer',
		'newest',
		'next',
		'no',
		'nobody',
		'non',
		'noone',
		'not',
		'nothing',
		'now',
		'nowhere',
		'number',
		'numbers',
		'o',
		'of',
		'off',
		'often',
		'old',
		'older',
		'oldest',
		'on',
		'once',
		'one',
		'only',
		'open',
		'opened',
		'opening',
		'opens',
		'or',
		'order',
		'ordered',
		'ordering',
		'orders',
		'other',
		'others',
		'our',
		'out',
		'over',
		'p',
		'part',
		'parted',
		'parting',
		'parts',
		'per',
		'perhaps',
		'place',
		'places',
		'point',
		'pointed',
		'pointing',
		'points',
		'possible',
		'present',
		'presented',
		'presenting',
		'presents',
		'problem',
		'problems',
		'put',
		'puts',
		'q',
		'quite',
		'r',
		'rather',
		'really',
		'right',
		'right',
		'room',
		'rooms',
		's',
		'said',
		'same',
		'saw',
		'say',
		'says',
		'second',
		'seconds',
		'see',
		'seem',
		'seemed',
		'seeming',
		'seems',
		'sees',
		'several',
		'shall',
		'she',
		'should',
		'show',
		'showed',
		'showing',
		'shows',
		'side',
		'sides',
		'since',
		'small',
		'smaller',
		'smallest',
		'so',
		'some',
		'somebody',
		'someone',
		'something',
		'somewhere',
		'state',
		'states',
		'still',
		'still',
		'such',
		'sure',
		't',
		'take',
		'taken',
		'than',
		'that',
		'the',
		'their',
		'them',
		'then',
		'there',
		'therefore',
		'these',
		'they',
		'thing',
		'things',
		'think',
		'thinks',
		'this',
		'those',
		'though',
		'thought',
		'thoughts',
		'three',
		'through',
		'thus',
		'to',
		'today',
		'together',
		'too',
		'took',
		'toward',
		'turn',
		'turned',
		'turning',
		'turns',
		'two',
		'u',
		'under',
		'until',
		'up',
		'upon',
		'us',
		'use',
		'used',
		'uses',
		'v',
		'very',
		'w',
		'want',
		'wanted',
		'wanting',
		'wants',
		'was',
		'way',
		'ways',
		'we',
		'well',
		'wells',
		'went',
		'were',
		'what',
		'when',
		'where',
		'whether',
		'which',
		'while',
		'who',
		'whole',
		'whose',
		'why',
		'will',
		'with',
		'within',
		'without',
		'work',
		'worked',
		'working',
		'works',
		'would',
		'x',
		'y',
		'year',
		'years',
		'yet',
		'you',
		'young',
		'younger',
		'youngest',
		'your',
		'yours',
		'z'
	)

	// Split out all the individual words in the phrase
	words = cleansed_string.match(/[^\s]+|\s+[^\s+]$/g)

	// Review all the words
	for(x=0; x &lt; words.length; x++) {
		// For each word, check all the stop words
		for(y=0; y &lt; stop_words.length; y++) {
			// Get the current word
			word = words[x].replace(/\s+|[^a-z]+/ig, "");	// Trim the word and remove non-alpha

			// Get the stop word
			stop_word = stop_words[y];

			// If the word matches the stop word, remove it from the keywords
			if(word.toLowerCase() == stop_word) {
				// Build the regex
				regex_str = "^\\s*"+stop_word+"\\s*$";		// Only word
				regex_str += "|^\\s*"+stop_word+"\\s+";		// First word
				regex_str += "|\\s+"+stop_word+"\\s*$";		// Last word
				regex_str += "|\\s+"+stop_word+"\\s+";		// Word somewhere in the middle
				regex = new RegExp(regex_str, "ig");

				// Remove the word from the keywords
				cleansed_string = cleansed_string.replace(regex, " ");
			}
		}
	}
	return cleansed_string.replace(/^\s+|\s+$/g, "");
}
</pre>
<p><a href="http://feedads.g.doubleclick.net/~a/WZcq8kDscEIvfgbjGDXcMXT4ebU/0/da"><img src="http://feedads.g.doubleclick.net/~a/WZcq8kDscEIvfgbjGDXcMXT4ebU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/WZcq8kDscEIvfgbjGDXcMXT4ebU/1/da"><img src="http://feedads.g.doubleclick.net/~a/WZcq8kDscEIvfgbjGDXcMXT4ebU/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=a2uYMnQc6dE:DLI-OULa2jY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=a2uYMnQc6dE:DLI-OULa2jY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=a2uYMnQc6dE:DLI-OULa2jY:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=a2uYMnQc6dE:DLI-OULa2jY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=a2uYMnQc6dE:DLI-OULa2jY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=a2uYMnQc6dE:DLI-OULa2jY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=a2uYMnQc6dE:DLI-OULa2jY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=a2uYMnQc6dE:DLI-OULa2jY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/GeekLad/~4/a2uYMnQc6dE" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://geeklad.com/remove-stop-words-in-javascript/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://geeklad.com/remove-stop-words-in-javascript</feedburner:origLink></item> <item><title>Dealing with Google Analytics Keyword Not Provided</title><link>http://feeds.geeklad.com/~r/GeekLad/~3/rgsgrNoND_Q/dealing-with-google-analytics-keyword-not-provided</link> <comments>http://geeklad.com/dealing-with-google-analytics-keyword-not-provided#comments</comments> <pubDate>Mon, 06 Feb 2012 10:00:18 +0000</pubDate> <dc:creator>GeekLad</dc:creator> <category><![CDATA[Search Engine Optimization]]></category> <category><![CDATA[Google Analytics]]></category> <category><![CDATA[Google Webmaster Tools]]></category><guid isPermaLink="false">http://geeklad.com/?p=2762</guid> <description><![CDATA[Late last year, Google made a move to encrypt user searches to enhance the security of their users&#8217; data.  Although this is great for users, it makes things more difficult for webmasters, because encrypted organic traffic now shows the keyword (not provided) in those instances.  Fortunately, there is [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://geeklad.com/wp-content/uploads/2008/09/analytics-logo.gif?cda6c1" alt="" title="analytics-logo" width="184" height="47" class="alignleft size-full wp-image-116" style="border: 0 none;" />Late last year, Google made a move to <a
href="http://googleblog.blogspot.com/2011/10/making-search-more-secure.html">encrypt user searches</a> to enhance the security of their users&#8217; data.  Although this is great for users, it makes things more difficult for webmasters, because encrypted organic traffic now shows the keyword <b>(not provided)</b> in those instances.  Fortunately, there is something you can do to obtain more information from Google Analytics when keywords are not provided.</p><p><span
id="more-2762"></span>When users are logged into their Google Accounts and search using Google, all of their searches are encrypted.  Google made this change in October of 2011. <a
href="http://www.mattcutts.com/blog/">Matt Cutts</a> (Google search and SEO expert) had reportedly projected the change would only affect a single-digit percentage of searches.  However, from November 2011 &#8211; January 2012, more than 17% of GeekLad&#8217;s organic referrals have come with the keyword not provided, which is quite significant.</p><p>It may be that most of the reports of Matt Cutts&#8217; statement was actually in reference to when Google first <a
href="http://googleblog.blogspot.com/2010/05/search-more-securely-with-encrypted.html">enabled SSL search</a>, which took place back in May of 2010.  I&#8217;m sure back then, it was in the single-digit percentage of users, but the more recent change in October for Google Accounts is much more significant.  Given the popularity of <a
href="https://plus.google.com">Google+</a>, there are more users with Google Accounts than ever.</p><p>So what can you do to get more info in Google Analytics when people are using encrypted search?  All you need to do is link your <a
href="https://www.google.com/webmasters/tools/">Google Webmaster Tools</a> account to Google Analytics.  Just log into Google Analytics, click the <b>Standard Reporting</b> tab, and in the left sidebar navigate to <b>Traffic Sources</b> &gt; <b>Search Engine Optimization</b> &gt; <b>Queries</b>.  If you have not yet linked your Webmaster Tools account, you can click the <b>Set up Webmaster Tools data sharing</b> button to link it.</p><p><a
rel="lightbox" href="http://geeklad.com/wp-content/uploads/2012/02/enable-webmaster-tools-in-google-analytics.png?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/02/enable-webmaster-tools-in-google-analytics-300x150.png?cda6c1" alt="" title="Enable Google Webmaster Tools in Google Analytics" width="300" height="150" class="aligncenter size-medium wp-image-2764" /></a></p><p>After your Webmaster Tools account is linked, Google Analytics will display statistics on search keywords, search impressions, clicks, average position, click through rates, etc.  Granted, this is just the same information already provided by your Google Webmaster Tools account.  However, if you were used to reviewing your organic search statistics all within Google Analytics, this process helps restore some normality.</p><p>Unfortunately, we will likely never have the sort of detailed statistics on organic search within Google Analytics we once had, but linking the Webmaster Tools data is better than nothing at all.</p> 
<p><a href="http://feedads.g.doubleclick.net/~a/cXfB7_s881aMJUe2EfVJx2wafl0/0/da"><img src="http://feedads.g.doubleclick.net/~a/cXfB7_s881aMJUe2EfVJx2wafl0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/cXfB7_s881aMJUe2EfVJx2wafl0/1/da"><img src="http://feedads.g.doubleclick.net/~a/cXfB7_s881aMJUe2EfVJx2wafl0/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=rgsgrNoND_Q:Z3V3c-GmBYo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=rgsgrNoND_Q:Z3V3c-GmBYo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=rgsgrNoND_Q:Z3V3c-GmBYo:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=rgsgrNoND_Q:Z3V3c-GmBYo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=rgsgrNoND_Q:Z3V3c-GmBYo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=rgsgrNoND_Q:Z3V3c-GmBYo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=rgsgrNoND_Q:Z3V3c-GmBYo:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=rgsgrNoND_Q:Z3V3c-GmBYo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/GeekLad/~4/rgsgrNoND_Q" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://geeklad.com/dealing-with-google-analytics-keyword-not-provided/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://geeklad.com/dealing-with-google-analytics-keyword-not-provided</feedburner:origLink></item> <item><title>WordPress Plugin to Remove Google AdSense and Google Analytics</title><link>http://feeds.geeklad.com/~r/GeekLad/~3/h7U5KbdHy2E/wordpress-plugin-to-remove-google-adsense-and-google-analytics</link> <comments>http://geeklad.com/wordpress-plugin-to-remove-google-adsense-and-google-analytics#comments</comments> <pubDate>Sun, 05 Feb 2012 18:37:34 +0000</pubDate> <dc:creator>GeekLad</dc:creator> <category><![CDATA[Blogging]]></category> <category><![CDATA[wordpress]]></category> <category><![CDATA[wordpress plugins]]></category><guid isPermaLink="false">http://geeklad.com/?p=2772</guid> <description><![CDATA[If you work on your blog a lot, you&#8217;re likely generating unwanted Google AdSense and Google Analytics impressions.  There are a number of tutorials out there that show you how to prevent AdSense ads from displaying if you&#8217;re logged into WordPress.  However, these involve modifying template files which [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://geeklad.com/wp-content/uploads/2012/02/wordpress-logo.png?cda6c1" alt="" title="wordpress-logo" width="150" height="150" class="alignleft size-full wp-image-2773" style="border: 0 none;" />If you work on your blog a lot, you&#8217;re likely generating unwanted Google AdSense and Google Analytics impressions.  There are a number of tutorials out there that show you how to prevent AdSense ads from displaying if you&#8217;re logged into WordPress.  However, these involve modifying template files which can be a nuisance and time consuming.  Ergo the Google AdSense and Google Analytics Remover plugin for WordPress.</p><p><span
id="more-2772"></span>I recently updated my WordPress template, which involved a lot of loading and reloading pages.  Unfortunately this was resulting in my Google AdSense advertisements displaying more impressions than I would have liked, not to mention I was also triggering unwanted page views in Google Analytics.  Rather than place special code in my template to stop AdSense and Google Analytics from loading, I decided to go about writing a plugin to permanently fix the problem.</p><h3>Plugin Features</h3><ul><li>Plugin only affects the display of pages when users are logged into WordPress<li>AdSense ads are not displayed, preventing blog users from generating ad impressions when viewing blog pages<li>AdSense ads are replaced with placeholders with the proper dimensions<li>Google Analytics code is removed, preventing you from generating statistics<li>Plugin should work whether AdSense and Analytics are loaded via plugins or with the WordPress template<li>Given the simplicity of the plugin and its purpose, there are no plugin options</ul><p>All you have to do is download, install, activate, and enjoy.</p><p
style="text-align: center;"><a
style="border: 1px solid #888888; padding: 4px 8px; font-weight: bold;" title="Download the Google AdSense and Google Analytics Remover WordPress Plugin" href="http://downloads.wordpress.org/plugin/google-adsense-and-google-analytics-remover.zip">Download the Google AdSense and Google Analytics Remover WordPress Plugin</a></p><p>Here is what my blog looked like when I installed and activated my plugin:</p><p><a
rel="lightbox" href="http://geeklad.com/wp-content/uploads/2012/02/wordpress-blog-with-adsense-removed.png?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/02/wordpress-blog-with-adsense-removed-300x185.png?cda6c1" alt="" title="wordpress-blog-with-adsense-removed" width="300" height="185" class="aligncenter size-medium wp-image-2775" /></a></p> 
<p><a href="http://feedads.g.doubleclick.net/~a/vXbOx8AKWEqD763DcYbgvyCae6g/0/da"><img src="http://feedads.g.doubleclick.net/~a/vXbOx8AKWEqD763DcYbgvyCae6g/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/vXbOx8AKWEqD763DcYbgvyCae6g/1/da"><img src="http://feedads.g.doubleclick.net/~a/vXbOx8AKWEqD763DcYbgvyCae6g/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=h7U5KbdHy2E:GokEA3RCtW8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=h7U5KbdHy2E:GokEA3RCtW8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=h7U5KbdHy2E:GokEA3RCtW8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=h7U5KbdHy2E:GokEA3RCtW8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=h7U5KbdHy2E:GokEA3RCtW8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=h7U5KbdHy2E:GokEA3RCtW8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=h7U5KbdHy2E:GokEA3RCtW8:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=h7U5KbdHy2E:GokEA3RCtW8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/GeekLad/~4/h7U5KbdHy2E" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://geeklad.com/wordpress-plugin-to-remove-google-adsense-and-google-analytics/feed</wfw:commentRss> <slash:comments>8</slash:comments> <feedburner:origLink>http://geeklad.com/wordpress-plugin-to-remove-google-adsense-and-google-analytics</feedburner:origLink></item> <item><title>Install ClockworkMod Touch for Free</title><link>http://feeds.geeklad.com/~r/GeekLad/~3/4ci6IOPkLUE/install-clockworkmod-touch-for-free</link> <comments>http://geeklad.com/install-clockworkmod-touch-for-free#comments</comments> <pubDate>Sat, 04 Feb 2012 17:15:57 +0000</pubDate> <dc:creator>GeekLad</dc:creator> <category><![CDATA[Android]]></category><guid isPermaLink="false">http://geeklad.com/?p=2737</guid> <description><![CDATA[It&#8217;s very easy to flash ClockworkMod recovery using the free ROM Manager app for Android.  However, if you want to flash the nifty new ClockworkMod Touch with ROM Manager, you&#8217;ll need to use the pay version.  Fortunately, the recovery image itself is still available for free and can [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://geeklad.com/wp-content/uploads/2012/02/clockworkmod-logo.png?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/02/clockworkmod-logo.png?cda6c1" alt="" title="clockworkmod-logo" width="200" height="199" class="alignleft size-full wp-image-2741" style="border: 0 none;" /></a>It&#8217;s very easy to flash ClockworkMod recovery using the free <a
href="https://market.android.com/details?id=com.koushikdutta.rommanager&#038;hl=en" title="ROM Manager for Android">ROM Manager app for Android</a>.  However, if you want to flash the nifty new ClockworkMod Touch with ROM Manager, you&#8217;ll need to use the pay version.  Fortunately, the recovery image itself is still available for free and can be installed manually.</p><p><span
id="more-2737"></span><a
href="http://clockworkmod.com/" title="ClockworkMod Recovery" target="_blank">ClockworkMod recovery</a> is a superb tool for flashing Android ROMs, backing up your ROM, restoring backups, and more.  The touch version is even better, as you can navigate it using your touch screen rather than having to use the power and volume up/down buttons.  Installing it for free is relatively easy, provided you have the right tool: <b>fastboot</b>.</p><p><a
rel="lightbox" href="http://geeklad.com/wp-content/uploads/2012/02/rom-manager-flash-clockwork-mod-touch.jpg?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/02/rom-manager-flash-clockwork-mod-touch-170x300.jpg?cda6c1" alt="" title="rom-manager-flash-clockwork-mod-touch" width="170" height="300" class="aligncenter size-medium wp-image-2739" /></a></p><p>First, you&#8217;ll need to visit the <a
href="http://www.clockworkmod.com/rommanager" target="_blank">ClockworkMod ROM Manager recoveries</a> page and check to see if ClockworkMod Touch is even available for your phone.  If it is, download the appropriate recovery image file (it will have &#8220;touch&#8221; in the filename and .img for the extension).  If you&#8217;re phone says <b>N/A</b>, unfortunately you&#8217;re out of luck.  Keep an eye on the page, as ClockworkMod Touch is being ported to other phones all the time.</p><p>If you don&#8217;t already have <b>fastboot</b>, you&#8217;ll need to <a
href="http://developer.android.com/sdk/index.html">download the Android SDK</a>.  You&#8217;ll find fastboot either in the <i>platform-tools</i> or <i>tools</i> folder.  With the recovery image and fastboot, you&#8217;re all set to flash ClockworkMod Touch recovery:</p><ul><li>Plug your phone into your computer with a USB cable<li>Boot/reboot your phone into the bootloader<p>Most phones allow you to do this by holding down the volume down (or volume up) as you boot the phone.  One important thing to note is that if you&#8217;re using a newer version of Android with fast boot (not to be confused with the fastboot command line tool), you&#8217;ll need to disable it to reboot your phone into recovery mode.  Otherwise, you can always remove the battery to do a full shutdown and then turn it back on while holding down the appropriate button.</p><p><a
rel="lightbox" href="http://geeklad.com/wp-content/uploads/2012/02/disable-android-fast-boot.jpg?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/02/disable-android-fast-boot-170x300.jpg?cda6c1" alt="" title="disable-android-fast-boot" width="170" height="300" class="aligncenter size-medium wp-image-2744" /></a></p><li>Your bootloader should now say it is in <b>FASTBOOT USB</b> mode.<li>From your computer, run the following command:<pre>fastboot flash recovery recovery-image-file.img</pre></ul><p>You won&#8217;t see anything happen on the phone, but on your computer you should see info as it uploads the image file and subsequently flashes it.  Here&#8217;s what the output looks like when I flash Clockworkmod Touch on my EVO 3D from my Linux box:</p><pre>./fastboot flash recovery recovery-clockwork-touch-5.8.0.2-shooter.img
sending 'recovery' (4128 KB)...
OKAY [  1.074s]
writing 'recovery'...
OKAY [  8.640s]
finished. total time: 9.714s
</pre><p>You can see from the output that it should take around 10 seconds.  If you&#8217;re using a Linux box, don&#8217;t forget to run the command when you are logged in as root, otherwise you will not be able to connect to the phone.</p><p>The next time you reboot your phone into recovery mode, you&#8217;ll have ClockworkMod Touch!  You can use fastboot to flash any recovery image, not just ClockworkMod.</p><p>Please note that <b>backups generated from other recoveries</b> (namely <a
href="http://teamw.in/project/twrp" target="_blank">TWRP &#8211; TeamWin Recovery Project</a>) <b>are <u>not</u> compatible with ClockworkMod</b>.  If you want to convert your backups to ClockWorkMod, it will take a lot of back-and-forth in restoring backups and flashing the appropriate recovery tool.</p> 
<p><a href="http://feedads.g.doubleclick.net/~a/U86T5dHBEs-pVH-lB-1bSas_-RQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/U86T5dHBEs-pVH-lB-1bSas_-RQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/U86T5dHBEs-pVH-lB-1bSas_-RQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/U86T5dHBEs-pVH-lB-1bSas_-RQ/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=4ci6IOPkLUE:w0Pmx4NCTl0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=4ci6IOPkLUE:w0Pmx4NCTl0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=4ci6IOPkLUE:w0Pmx4NCTl0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=4ci6IOPkLUE:w0Pmx4NCTl0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=4ci6IOPkLUE:w0Pmx4NCTl0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=4ci6IOPkLUE:w0Pmx4NCTl0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=4ci6IOPkLUE:w0Pmx4NCTl0:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=4ci6IOPkLUE:w0Pmx4NCTl0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/GeekLad/~4/4ci6IOPkLUE" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://geeklad.com/install-clockworkmod-touch-for-free/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://geeklad.com/install-clockworkmod-touch-for-free</feedburner:origLink></item> <item><title>Download Video from YouTube with Google Chrome</title><link>http://feeds.geeklad.com/~r/GeekLad/~3/wNq6KL2GFkw/download-video-from-youtube-with-google-chrome</link> <comments>http://geeklad.com/download-video-from-youtube-with-google-chrome#comments</comments> <pubDate>Wed, 01 Feb 2012 10:00:46 +0000</pubDate> <dc:creator>GeekLad</dc:creator> <category><![CDATA[Internet]]></category> <category><![CDATA[Web Browsers]]></category> <category><![CDATA[flash video]]></category> <category><![CDATA[Google Chrome]]></category><guid isPermaLink="false">http://geeklad.com/?p=2698</guid> <description><![CDATA[Some time ago, I wrote a post on how to download flash video from any website using Firefox and Firebug.  Since then Google Chrome has become my browser of choice, and it has a great debugger built into it, which makes it even easier.  In this tutorial, I&#8217;ll [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://geeklad.com/wp-content/uploads/2012/01/you-tube-logo.png?cda6c1" alt="" title="you-tube-logo" width="200" height="73" class="alignleft size-full wp-image-2699" style="border: 0 none;"/>Some time ago, I wrote a post on how to <a
href="http://geeklad.com/download-flash-video-from-any-website">download flash video from any website</a> using Firefox and Firebug.  Since then <a
href="https://www.google.com/chrome" target="_blank">Google Chrome</a> has become my browser of choice, and it has a great debugger built into it, which makes it even easier.  In this tutorial, I&#8217;ll show you how to download video from YouTube with Google Chrome.</p><p><span
id="more-2698"></span>Although you could use Firefox to download videos from YouTube, in Google Chrome it is a snap, and it does not require any additional plugins.  First, you&#8217;ll want to enable the JavaScript console, Chrome&#8217;s built-in debugger.</p><p>You can just do this by pressing <b>Control+Shift+J</b> or by clicking the options wrench, and going to <b>Tools</b> &gt; <b>JavaScript Console</b>.</p><p><img
src="http://geeklad.com/wp-content/uploads/2012/01/launch-chrome-javascript-debugger.png?cda6c1" alt="" title="launch-chrome-javascript-debugger" width="717" height="320" class="aligncenter size-full wp-image-717" style="border: 0 none;" /></p><p>Next, go visit the webpage with the YouTube video you want to download and play the video.  As the video starts playing, it will start downloading the video file.  The Chrome Javascript file makes it very easy to identify the YouTube video file you will download.</p><p>Just click the <b>Network</b> tab, and then click the <b>Size</b> column header twice.  This will cause the list to sort by size descending (you will see a down arrow next to where it says <i>Size</i>.  You&#8217;ll notice that the largest file is listed at the top, and it is called <i>videoplayback</i>.</p><p><a
rel="lightbox[howto]" href="http://geeklad.com/wp-content/uploads/2012/01/identifying-video-file-to-download.png?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/01/identifying-video-file-to-download.png?cda6c1" alt="Identifying the video file to download" title="Identifying the video file to download" width="100%" class="aligncenter" style="border: 0 none;" /></a></p><p>In this screenshot, you see there are two files called <i>videoplayback</i>.  The second one was an advertisement I did not care to watch and skipped, which is why you see it in red with a status of <i>(cancelled)</i>.  To download the video, right-click on the file you want to save, and then click <b>Open Link in New Tab</b>.  This will actually save the file to your downloads directory.</p><p><img
src="http://geeklad.com/wp-content/uploads/2012/01/saving-the-youtube-video-file.png?cda6c1" alt="" title="saving-the-youtube-video-file" width="207" height="291" class="aligncenter size-full wp-image-2717" style="border: 0 none;" /></p><p>You may want to rename the file to something a bit more memorable than <b>videoplayback</b>, and even add the <b>.flv</b> extension to the end of the filename.  You can play back the saved file with a great, free video player called <a
href="http://www.videolan.org/vlc/" target="_blank">VLC</a>, which is available on Windows, Mac, and Linux.  Consequently&#8230;  This process of downloading flash videos will work with other sites as well as YouTube.  Just look for the largest file on the page, save it, and play it back with VLC.</p> 
<p><a href="http://feedads.g.doubleclick.net/~a/ksWQNGF4Z98dz-0d_xzgr-z94Do/0/da"><img src="http://feedads.g.doubleclick.net/~a/ksWQNGF4Z98dz-0d_xzgr-z94Do/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ksWQNGF4Z98dz-0d_xzgr-z94Do/1/da"><img src="http://feedads.g.doubleclick.net/~a/ksWQNGF4Z98dz-0d_xzgr-z94Do/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=wNq6KL2GFkw:pGTWwdmu0Zg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=wNq6KL2GFkw:pGTWwdmu0Zg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=wNq6KL2GFkw:pGTWwdmu0Zg:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=wNq6KL2GFkw:pGTWwdmu0Zg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=wNq6KL2GFkw:pGTWwdmu0Zg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=wNq6KL2GFkw:pGTWwdmu0Zg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=wNq6KL2GFkw:pGTWwdmu0Zg:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=wNq6KL2GFkw:pGTWwdmu0Zg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/GeekLad/~4/wNq6KL2GFkw" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://geeklad.com/download-video-from-youtube-with-google-chrome/feed</wfw:commentRss> <slash:comments>3</slash:comments> <feedburner:origLink>http://geeklad.com/download-video-from-youtube-with-google-chrome</feedburner:origLink></item> <item><title>How to Tether Android for Free</title><link>http://feeds.geeklad.com/~r/GeekLad/~3/vHF1NHHTAJw/how-to-tether-android</link> <comments>http://geeklad.com/how-to-tether-android#comments</comments> <pubDate>Mon, 30 Jan 2012 10:00:23 +0000</pubDate> <dc:creator>GeekLad</dc:creator> <category><![CDATA[Android]]></category> <category><![CDATA[Gadgets]]></category><guid isPermaLink="false">http://geeklad.com/?p=2607</guid> <description><![CDATA[Most information you&#8217;ll find about tethering with Android, shows you how to tether Android using an application called PdaNet.  The problem with PdaNet is that the free version restricts you to http sites only, and you have to get the paid version for https connections.  If you&#8217;re prepared [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://geeklad.com/wp-content/uploads/2012/01/connect.png?cda6c1" alt="Free Wired Tether on Android" title="Free Wired Tether on Android" width="128" height="128" class="alignleft size-full wp-image-2608" style="border: 0 none;" />Most information you&#8217;ll find about tethering with Android, shows you how to tether Android using an application called PdaNet.  The problem with PdaNet is that the free version restricts you to http sites only, and you have to get the paid version for https connections.  If you&#8217;re prepared to put a little elbow grease into it and you have a USB cable to connect the phone, you can learn how to tether Android without root for free for http and https sites as well.</p><p><span
id="more-2607"></span><br
/><h3><a
name="how-to-teher-android">Summary of How to Tether Android</a></h3><p>Here is a quick rundown of how to tether Android, and what is involved:</p><ul><li>Download USB drivers for your computer<li>Download a special program for your computer called ADB<li>Configure your computer&#8217;s web browser to use the Android tether connection<li>Download an app to tether Android to your PC<li>Connect your phone to the computer<li>Launch apps on your phone and PC<li>Enjoy your tethered Android connection!</ul><p>If that sounds a bit too involved for you, then you may wish to go ahead and buy PdaNet in the Android market, so that you can connect to both http and https websites using a tethered Android connection.</p><h3><a
name="what-does-tethering-android-mean">What Does Tethering Android Mean?</a></h3><p>You may be wondering exactly what it means to tether Android.  &#8220;Tethering&#8221; is a term often used to describe the process of using your phone to connect a PC or laptop to the internet.  Tethering is very convenient if you are travelling, and do not have immediate access to a free WiFi or wired internet connection.  This particular article will show you how to tether Android with a USB cable that connects your phone to your computer.</p><h3><a
name="what-does-root-mean">What Does Root Mean?</a></h3><p>Rooting an Android phone is essentially equivalent to &#8220;jailbreaking&#8221; an iPhone. <b>root</b> is the superuser of the phone, and has full access to do anything and everything to the phone.  Many tethering solutions require root access to the phone, but this one does not.  If you do have root, I highly recommend the <a
href="http://code.google.com/p/android-wifi-tether/" target="_blank">Android WiFi Tether App</a>.</p><h3><a
name="prepare-your-pc">Prepare Your PC</a></h3><p>First, you need to obtain USB drivers for connecting your phone to your computer.  The Android developers website has a page with <a
href="http://developer.android.com/sdk/oem-usb.html" target="_blank">Android USB drivers for different phone manufacturers</a>.  Alternatively, you could install the <a
href="http://developer.android.com/sdk/win-usb.html" target="_blank">Google USB driver for Windows</a>.  However, that requires installing the <a
href="http://developer.android.com/sdk/index.html" target="_blank">Android SDK (Software Development Kit)</a>, which is quite large and may take some time to download.</p><p>After you&#8217;ve installed the USB drivers, you&#8217;ll need to download ADB (Android Debug Bridge).  If you downloaded the Android SDK to get the Google USB drivers, then you already have ADB.  It is located in the <b>platform-tools</b> folder wherever you extracted/installed the SDK files.</p><p>If you did not download the Android SDK, you can download it from a nice, neat, little package I put together that has <a
href="http://geeklad.com/wp-content/uploads/2012/01/adb.zip?cda6c1" title="all the ADB files in a single zip, for connecting your Android phone to your PC" target="_blank">all the ADB files in a single zip</a>.  Download and unzip it somewhere on your computer, just be sure to remember where the files are.</p><p>Finally, you need to configure your browser to use a proxy.  This is because the Android app you will use acts as a proxy for your browser.  You will configure your browser to use <i>only</i> <b>localhost</b> a socks proxy on <b>port 1080</b>.  If you&#8217;re using Internet Explorer as your browser:</p><ul><li>Go into <b>Internet Settings</b><li>Click the <b>Connections</b> tab<p><img
src="http://geeklad.com/wp-content/uploads/2012/01/Internet-Explorer-9-Options.png?cda6c1" alt="" title="Internet Explorer 9 Options" width="423" height="541" class="aligncenter size-full wp-image-2639" style="border: 0 none;" /></p><li>Click the <b>LAN Settings</b> button<li>Under <i>Proxy server</i> click the checkbox that says <b>Use a proxy server for your LAN</b><li>Clear the current values for <b>Address</b> and <b>Port</b> (if there&#8217;s already something there, write it down in case you need to restore the prior settings)<p><img
src="http://geeklad.com/wp-content/uploads/2012/01/Internet-Explorer-9-LAN-Settings.png?cda6c1" alt="" title="Internet Explorer 9 LAN Settings" width="394" height="345" class="aligncenter size-full wp-image-2640" style="border: 0 none;" /></p><li>Click the <b>Advanced button</b><li>Clear out everything (again, write down or screenshot your current settings)<li>Under <i>Socks</i> enter <b>localhost</b> and <b>1080</b> for the port<li>Make sure <b>Use the same proxy for all protocols</b> is <b><u>not</u> checked</b><p><img
src="http://geeklad.com/wp-content/uploads/2012/01/Internet-Explorer-9-Proxy-Settings.png?cda6c1" alt="" title="Internet Explorer 9 Proxy Settings" width="409" height="439" class="aligncenter size-full wp-image-2641" style="border: 0 none;" /></p><h3><a
name="prepare-your-android-phone">Prepare Your Android Phone</a></h3><p>There are a few settings you&#8217;ll need to make sure are enabled on your phone before you proceed.  First, you&#8217;ll need to enable USB debugging for development.  To do this, just go to your phone&#8217;s <b>Settings</b> &gt; <b>Applications</b> &gt; <b>Development</b> and enable <b>USB debugging</b>:</p><div><a
rel="lightbox[android-setup]" href="http://geeklad.com/wp-content/uploads/2012/01/settings.jpg?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/01/settings-170x300.jpg?cda6c1" alt="" title="Settings" width="170" height="300" class="size-medium wp-image-2610" style="margin-right: 20px;" /></a><a
rel="lightbox[android-setup]" href="http://geeklad.com/wp-content/uploads/2012/01/applications.jpg?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/01/applications-170x300.jpg?cda6c1" alt="" title="Applications" width="170" height="300" class="size-medium wp-image-2611" style="margin-right: 20px;" /></a><a
rel="lightbox[android-setup]" href="http://geeklad.com/wp-content/uploads/2012/01/development.jpg?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/01/development-170x300.jpg?cda6c1" alt="" title="Development" width="170" height="300" class="size-medium wp-image-2612" style="margin-right: 20px;" /></a></div><p>Next you will need to download Tetherbot for Android to your phone.  This is the <a
name="free-android-app-for-wired-tethering" href="http://graha.ms/androidproxy/" target="_blank">free Android app that allows you to perform wired tethering on your phone</a>.  Launch the Android web browser on your phone, and go to: <a
href="http://goo.gl/KwgsT">http://goo.gl/KwgsT</a> on your phone to download it.  After you&#8217;ve downloaded it, go to your phone&#8217;s downloads and press on the <b>Tetherbot.apk</b> to install the App.</p><div><a
rel="lightbox[tetherbot-setup]" href="http://geeklad.com/wp-content/uploads/2012/01/web-browser.jpg?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/01/web-browser-300x188.jpg?cda6c1" alt="" title="web-browser" width="300" height="188" class="alignnone size-medium wp-image-2649" style="margin-right: 20px;" /></a><a
rel="lightbox[tetherbot-setup]" href="http://geeklad.com/wp-content/uploads/2012/01/downloads.jpg?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/01/downloads-170x300.jpg?cda6c1" alt="" title="downloads" width="170" height="300" class="alignnone size-medium wp-image-2648" style="margin-right: 20px;" /></a><a
rel="lightbox[tetherbot-setup]" href="http://geeklad.com/wp-content/uploads/2012/01/install-tetherbot.jpg?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/01/install-tetherbot-170x300.jpg?cda6c1" alt="" title="install-tetherbot" width="170" height="300" class="alignnone size-medium wp-image-2647" style="margin-right: 20px;" /></a></div><h3><a
name="tether-your-pc">Tether Your PC with Your Phone</a></h3><p>Now you should be all set to tether your phone.  First, connect your phone to your PC with a USB cable.  Next, open a command prompt by clicking <b>Start</b> &gt; <b>Run&#8230;</b> (or press the <b>Windows Key+R</b>), type <b>cmd</b> and press <b>Enter</b>.  Change to the directory where you unzipped the ADB files.  For example, if you put them in <b>C:\ADB</b> then type: <b><pre>
C:
cd \ADB
</pre><p></b></p><p>Next, type the following commands: <b><pre>
adb kill-server
adb start-server
adb forward tcp:1080 tcp:1080
</pre><p></b></p><p>Alternatively, you can download and run a <a
href="http://geeklad.com/wp-content/uploads/2012/01/forward.zip?cda6c1" target="_blank">batch file that sets up the tether proxy</a> for you.  Just download, unzip in the same folder where you put ADB, and run the <b>forward.bat</b> file.</p><p>The first command, <b>adb kill-server</b>, is optional, but it stops any existing server from running.  This is good to do first, if you ever disconnect/reconnect the phone.  The second command, <b>adb start-server</b> starts ADB on your PC to connect it to your phone in debug mode.  The last command, <b>adb forward tcp:1080 tcp:1080</b> sets up a port forward to the phone.  This is the port we will use as the proxy, and the port that Tetherbot uses on the phone.</p><p>Last but not least, launch Tetherbot on your phone, and click <b>Start Socks</b>.</p><p><a
rel="lightbox[last-step]" href="http://geeklad.com/wp-content/uploads/2012/01/start-socks-server.jpg?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2012/01/start-socks-server-170x300.jpg?cda6c1" alt="" title="start-socks-server" width="170" height="300" class="aligncenter size-medium wp-image-2660" /></a></p><p>You&#8217;ll see a message on the phone that says <b>Socks Service Starting</b>.  Launch your web browser on your PC, and you should be tethered to your phone!  Please note, that because this is a rootless tether solution, it does not provide 100% TCP/IP tethering through your phone.  Any application you want to use the network connection through the phone needs to have the localhost:1080 socks proxy configured.</p><p>In my experience, Tetherbot is quite good for web browsing. However, if you&#8217;re looking for persistent connections (such as connecting an instant messaging client), Tetherbot tends to drop the connection occasionally, so it isn&#8217;t exactly ideal.  If you&#8217;re looking for persistent connections, it is probably best to do that via an SSH server and the <a
href="https://market.android.com/details?id=org.sshtunnel&#038;hl=en">SSH Tunnel client for Android</a>.  That&#8217;s another post for another day.  Happy tethering! <img
src="http://geeklad.com/wp-includes/images/smilies/icon_smile.gif?cda6c1" alt=':)' class='wp-smiley' /></p> 
<p><a href="http://feedads.g.doubleclick.net/~a/CWW7tWPus-Evn-CqaYuFK16LG9U/0/da"><img src="http://feedads.g.doubleclick.net/~a/CWW7tWPus-Evn-CqaYuFK16LG9U/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/CWW7tWPus-Evn-CqaYuFK16LG9U/1/da"><img src="http://feedads.g.doubleclick.net/~a/CWW7tWPus-Evn-CqaYuFK16LG9U/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=vHF1NHHTAJw:Yeg2jK-bbeU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=vHF1NHHTAJw:Yeg2jK-bbeU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=vHF1NHHTAJw:Yeg2jK-bbeU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=vHF1NHHTAJw:Yeg2jK-bbeU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=vHF1NHHTAJw:Yeg2jK-bbeU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=vHF1NHHTAJw:Yeg2jK-bbeU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=vHF1NHHTAJw:Yeg2jK-bbeU:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=vHF1NHHTAJw:Yeg2jK-bbeU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/GeekLad/~4/vHF1NHHTAJw" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://geeklad.com/how-to-tether-android/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://geeklad.com/how-to-tether-android</feedburner:origLink></item> <item><title>Run Android 4.0 Ice Cream Sandwich (ICS) on the HTC EVO 3D</title><link>http://feeds.geeklad.com/~r/GeekLad/~3/uGEgVYNwTL4/run-android-4-0-ice-cream-sandwich-ics-on-the-htc-evo-3d</link> <comments>http://geeklad.com/run-android-4-0-ice-cream-sandwich-ics-on-the-htc-evo-3d#comments</comments> <pubDate>Sat, 28 Jan 2012 22:06:55 +0000</pubDate> <dc:creator>GeekLad</dc:creator> <category><![CDATA[Android]]></category> <category><![CDATA[CyanogenMod]]></category> <category><![CDATA[Ice Cream Sandwich]]></category><guid isPermaLink="false">http://geeklad.com/?p=2676</guid> <description><![CDATA[In October last year, Google officially announced Android 4.0 (Ice Cream Sandwich, aka ICS) and the first phone to run it, the Galaxy Nexus.  It wasn&#8217;t long before HTC announced ICS would be coming to their advanced handsets as well, in &#8220;early 2012&#8243;.  If you&#8217;re as anxious as [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://geeklad.com/wp-content/uploads/2012/01/ics-logo.png?cda6c1" alt="" title="ics-logo" width="300" height="225" class="alignleft size-full wp-image-2677" style="border: 0 none;" />In October last year, Google officially announced <a
href="http://googleblog.blogspot.com/2011/10/unwrapping-ice-cream-sandwich-on-galaxy.html" target="_blank">Android 4.0 (Ice Cream Sandwich, aka ICS) and the first phone to run it, the Galaxy Nexus</a>.  It wasn&#8217;t long before <a
href="https://www.facebook.com/notes/htc/announcing-the-first-wave-of-htc-devices-to-receive-upgrades-to-ice-cream-sandwi/10150518462703084" target="_blank">HTC announced ICS would be coming to their advanced handsets as well, in &#8220;early 2012&#8243;</a>.  If you&#8217;re as anxious as I am to try out Ice Cream Sandwich on your EVO 3D, I&#8217;m pleased to tell you that some working builds have surfaced!</p><p><span
id="more-2676"></span><em><strong>Update</strong>:  JoelZ9614 has released an <a
href="http://geeklad.com/updated-cyanogenmod-9-ice-cream-sandwich-for-evo-3d-cm9-ics">update to the CyanogenMod 9 Ice Cream Sandwich build for the EVO 3D</a>.</p><p>Before I tell you more, please be aware these are beta builds, and not everything is working.  The most notable features that are lacking that I&#8217;ve noticed are 4G, camera, and USB mass storage.  If you can get by without those features, you can probably use one of these ROMs as your &#8220;daily driver&#8221;.</p><p>A brilliant Android developer/hacker that goes by the handle <a
href="http://twitter.com/joelz9614" target="_blank">JoelZ9614</a> has posted two working builds of Ice Cream Sandwich for the EVO 3D, one that is an AOSP (Android Open Source Project) build, and another that is a CyanogenMod 9.0 build.  If you&#8217;re not familiar with <a
href="http://www.cyanogenmod.com/about" target="_blank">CyanogenMod</a>, it is a widely used ROM that is based on AOSP but includes a number of enhancements and features designed to increase performance and reliability.</p><h3><a
name="where-to-get-it">Where to Get Ice Cream Sandwich for the EVO3D</a></h3><p>You can download the ROMs here:</p><h4><a
href="http://www.androidfilehost.com/main/EVO_3D_Developers/Joel/ROMS/ICSAOSPRELEASES/" title="http://www.androidfilehost.com/main/EVO_3D_Developers/Joel/ROMS/ICSAOSPRELEASES/" target="_blank">http://www.androidfilehost.com/main/EVO_3D_Developers/Joel/ROMS/ICSAOSPRELEASES/</a></h4><p>As of today, the <b>ICS-AOSP.zip</b> file is the AOSP build and <b>cm9-shooter-ota-joel-12812.zip</b> file is the CyanogenMod 9.0 build.  If you download CyanogenMod, you should be made aware that this particular Android ROM does not include any Google apps by default (or Google Accounts synchronization).</p><p>If you want Google apps &#038; features on the CyanogenMod build (often referred to by CyanogenMod users/developers as GApps), <b>do not download the CM9-GAPPS.zip file you see in the above file download site</b>.  There is a problem with this file and it does not work.  For the proper GApps, download the file located at:</p><h4><a
href="http://www.mediafire.com/?db9zc0mq1lj0gqe" target="_blank">http://www.mediafire.com/?db9zc0mq1lj0gqe</a></h4><h3><a
name="a-few-quirks">Minor Issues and Workarounds</a></h3><p>Please note that although data is working with these builds, you may encounter issues initially and your phone may indicate there is <b>No Service</b>.  If this happens to you, just put the phone into airplane mode (hold the power button down for a few seconds), leave it in airplane mode for about 10 seconds, and then disable airplane mode.  This should get 3G data working for you.</p><p>Another thing to note is that the CyanogenMod build I used does have some issues with the display, where the screen gets garbled from time-to-time.  Usually a swipe of the status bar will clean things up.  The AOSP build does not have the display issues I encountered with the CyanogenMod version.</p><h3><a
name="whats-new">So What&#8217;s New?</a></h3><p>Since you&#8217;re probably new to Ice Cream Sandwich, here&#8217;s a quick run-down of some things you may want to check out:</p><ul><li><b>Home Screen Folders</b>: Just like iOS, you can drag and drop home screen icons on top of each other to create folders and group them together.  To rename the folders, just open one and click at the bottom where it says <i>Unnamed Folder</i>, and you can type the name of the folder.<li><b>Voice Keyboard</b>: In Gingerbread, when you want to use the voice recognition keyboard, you have to submit pieces of it at a time, which is kind of a pain.  In Ice Cream Sandwich, it now maintains an open connection to Google&#8217;s voice recognition servers, and behaves much more like a keyboard.  You can just speak continuously, and you&#8217;ll see your speech appear in the text area as it is analyzed.<li><b>Built-in WiFi Hotspot</b>: You no longer need to use the <a
href="http://code.google.com/p/android-wifi-tether/" target="_blank">WiFi Tether app</a>, as it is built right into Ice Cream Sandwich.<li><b>Advanced Notifications</b>: In Gingerbread you can only clear all notifications, or click on them, which may result in launching an app.  This is often an unnecessary step, as just seeing the notification might be enough for you.  With Ice Cream Sandwich, you can just swipe to clear them.<li><b>Better Task Switching</b>: A long-press of the Home button will now show a long, scrollable list of recent applications.  If you do not want to see a particular app in the recent apps list, just swipe it to clear it off the recent apps list.<li><b>Customizable Favorites Tray</b>: The last row of icons on your home screen is static, and is always displayed on all the home screens.  You can customize it with any frequently used applications.</ul><p>There are a lots of more <a
href="http://developer.android.com/sdk/android-4.0-highlights.html#UserFeatures" target="_blank">cool new features in Android 4.0</a> you&#8217;ll want to check out for yourself.</p><h3><a
name="stay-informed">Additional Info and Keeping Informed</a></h3><p>You can rest assured progress will continue, and better builds will continue to be released.  JoelZ9614 and others are working hard to make things better all the time.  It seems he&#8217;s been posting new releases every 2-3 days or so.  The main thread for the AOSP build is at the <a
href="http://forum.xda-developers.com/" target="_blank">XDA Developers forum</a> here:</p><h4><a
href="http://forum.xda-developers.com/showthread.php?t=1411461" title="AOSP Beta Build of Ice Cream Sandwich on the EVO 3D" target="_blank">http://forum.xda-developers.com/showthread.php?t=1411461</a></h4><p>His CyanogenMod build on <a
href="http://rootzwiki.com/index" target="_blank">RootzWiki forum</a> here:</p><h4><a
href="http://rootzwiki.com/topic/16573-12812romiml74k403cyanogenmod-9-alpha-v1unofficial/" title="Announcement of the CyanogenMod 9 build of Ice Cream Sandwich for the EVO3d" target="_blank">http://rootzwiki.com/topic/16573-12812romiml74k403cyanogenmod-9-alpha-v1unofficial/</a></h4><p>You may want to follow these threads as things continue to develop.</p> 
<p><a href="http://feedads.g.doubleclick.net/~a/txtJn66y0gVtIXeLJsRJbiTPIeU/0/da"><img src="http://feedads.g.doubleclick.net/~a/txtJn66y0gVtIXeLJsRJbiTPIeU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/txtJn66y0gVtIXeLJsRJbiTPIeU/1/da"><img src="http://feedads.g.doubleclick.net/~a/txtJn66y0gVtIXeLJsRJbiTPIeU/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=uGEgVYNwTL4:yD6CbtjvAP8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=uGEgVYNwTL4:yD6CbtjvAP8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=uGEgVYNwTL4:yD6CbtjvAP8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=uGEgVYNwTL4:yD6CbtjvAP8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=uGEgVYNwTL4:yD6CbtjvAP8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=uGEgVYNwTL4:yD6CbtjvAP8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=uGEgVYNwTL4:yD6CbtjvAP8:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=uGEgVYNwTL4:yD6CbtjvAP8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/GeekLad/~4/uGEgVYNwTL4" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://geeklad.com/run-android-4-0-ice-cream-sandwich-ics-on-the-htc-evo-3d/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://geeklad.com/run-android-4-0-ice-cream-sandwich-ics-on-the-htc-evo-3d</feedburner:origLink></item> <item><title>A Wealth of Free Blog Content in Your Search History</title><link>http://feeds.geeklad.com/~r/GeekLad/~3/Q7W9Tcp3Qdc/a-wealth-of-free-blog-content-in-your-search-history</link> <comments>http://geeklad.com/a-wealth-of-free-blog-content-in-your-search-history#comments</comments> <pubDate>Wed, 25 Jan 2012 01:46:31 +0000</pubDate> <dc:creator>GeekLad</dc:creator> <category><![CDATA[Blogging]]></category> <category><![CDATA[Make Money Online]]></category> <category><![CDATA[how to make money]]></category><guid isPermaLink="false">http://geeklad.com/?p=2586</guid> <description><![CDATA[Anyone who owns a blog is well aware that content is king.  However, developing a lot of original quality content is often easier said than done.  That being said, you may have a wealth of free content at your very fingertips of which you aren&#8217;t even aware: your search [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://geeklad.com/wp-content/uploads/2012/01/notepad-icon.png?cda6c1" alt="Content is King" title="Content is King" width="200" height="200" class="alignleft size-full wp-image-2590" style="border: 0 none;" />Anyone who owns a blog is well aware that <a
href="http://geeklad.com/make-money-online-content-or-service">content is king</a>.  However, developing a lot of original quality content is often easier said than done.  That being said, you may have a wealth of free content at your very fingertips of which you aren&#8217;t even aware: your search history.</p><p><em><strong>Update</strong>:Now getting free content from your Google History is easier than ever.  Check out my new free tool to <a
href="http://geeklad.com/download-google-history">download Google History</a>.</em></p><p><span
id="more-2586"></span><a
href="http://googleblog.blogspot.com/2007/04/your-slice-of-web.html">Google has made search history available to users</a> for quite some time.  If you have a Google Account since then, a plethora of great content awaits you!  If you don&#8217;t have one, <a
href="https://accounts.google.com/NewAccount">sign up for a Google Account</a> and make sure you&#8217;re signed in when you search.  To view your search history, just visit <a
href="https://www.google.com/history">https://www.google.com/history</a>.</p><p>If you use Google to search often, you may want to review your history frequently, perhaps once a week or once every few days.  If you don&#8217;t Google much (something is wrong with you),  you may be able to get away with searching once a month or once every couple of weeks.</p><p>As you flip through pages of searches and results you clicked on, you&#8217;ll recall the pressing questions you were looking to answer and the new and interesting knowledge you were seeking to acquire.  Take note of those that will make good topics for blog posts.  You may want to keep a running list on <a
href="https://docs.google.com">Google Docs</a> like recently started.</p><p>Not all of your search activity will make for good blog content, but you might be surprised how much of it will.  The best content will come from obscure information that you had to search for many different ways, and had to piece together from multiple sources of information.  There are several reasons why these kinds of searches will do well as new content for your website or blog:</p><ol><li>You&#8217;re probably looking for information on a topic you enjoy and interests you &#8211; <em>You should always write about what you enjoy, because you probably know a lot about the topic already or aspire to learn more</em><li>If you&#8217;re searching for it, it is quite likely other people are searching for it<li>If you had to go through effort finding it, others are going through effort finding it<li>If everyone is having trouble finding it, that means there is very little competition for the keywords surrounding the subject matter you&#8217;re seeking &#8211; <em>that bodes well for you, because it is much more likely your new content will rank high in search engine result pages (SERPs)</em></ol><p>If your original content is well-organized and the information is hard to find, people looking for the info will flock to your page.  Fundamentally, your new webpage will fulfill <a
href="http://www.google.com/about/corporate/company/">Google&#8217;s mission</a>: &#8220;Organize the world‘s information and make it universally accessible and useful.&#8221; That just makes good sense.</p><p>Even if your searches aren&#8217;t necessarily on obscure topics with disparate information on the web, your search history will still provide a superb source of story ideas.  When you search for subject matter you blog about, you&#8217;re either enhancing your existing knowledge or seeking information that is new (not to mention interesting) to you.  That is exactly the stuff good posts are made of.</p> 
<p><a href="http://feedads.g.doubleclick.net/~a/l16ZOjvQ4zK00-kbD7AAb-Ix5Ss/0/da"><img src="http://feedads.g.doubleclick.net/~a/l16ZOjvQ4zK00-kbD7AAb-Ix5Ss/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/l16ZOjvQ4zK00-kbD7AAb-Ix5Ss/1/da"><img src="http://feedads.g.doubleclick.net/~a/l16ZOjvQ4zK00-kbD7AAb-Ix5Ss/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=Q7W9Tcp3Qdc:OKvmyUW2y3M:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=Q7W9Tcp3Qdc:OKvmyUW2y3M:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=Q7W9Tcp3Qdc:OKvmyUW2y3M:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=Q7W9Tcp3Qdc:OKvmyUW2y3M:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=Q7W9Tcp3Qdc:OKvmyUW2y3M:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=Q7W9Tcp3Qdc:OKvmyUW2y3M:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=Q7W9Tcp3Qdc:OKvmyUW2y3M:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=Q7W9Tcp3Qdc:OKvmyUW2y3M:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/GeekLad/~4/Q7W9Tcp3Qdc" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://geeklad.com/a-wealth-of-free-blog-content-in-your-search-history/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://geeklad.com/a-wealth-of-free-blog-content-in-your-search-history</feedburner:origLink></item> <item><title>Playing the Empire Avenue Social Media Exchange</title><link>http://feeds.geeklad.com/~r/GeekLad/~3/kBYLKmLavBI/playing-empire-avenue</link> <comments>http://geeklad.com/playing-empire-avenue#comments</comments> <pubDate>Tue, 10 May 2011 02:00:56 +0000</pubDate> <dc:creator>GeekLad</dc:creator> <category><![CDATA[Gaming]]></category> <category><![CDATA[Programming]]></category><guid isPermaLink="false">http://geeklad.com/?p=2442</guid> <description><![CDATA[ Update: e(RINGLE) has incorporated my algorithm into his P3 for Empire Avenue Chrome extension.  Use his extension instead of mine, because it includes what I built and much more!  If you already installed mine, be sure to uninstall it before installing P3, or some weird things can [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://empireavenue.com/?t=zb6nzta0"><img
src="http://geeklad.com/wp-content/uploads/2011/05/empire-avenue-logo.png?cda6c1" alt="" title="empire-avenue-logo" width="300" height="43" class="alignleft size-full wp-image-2443" style="border: 0 none;" /></a> <em><strong>Update</strong>: <a
href="http://www.empireavenue.com/RINGLE?t=zb6nzta0">e(RINGLE)</a> has incorporated my algorithm into his <a
href="https://chrome.google.com/webstore/detail/nicoicbaoinjgpcclfjdkfimngkgogdl">P<sup>3</sup> for Empire Avenue</a> Chrome extension.  Use his extension instead of mine, because it includes what I built and much more!  If you already installed mine, be sure to uninstall it before installing P<sup>3</sup>, or some weird things can happen.</em></p><p>Recently, I started playing in a fantasy social media stock exchange, called <a
href="http://empireavenue.com/?t=zb6nzta0">Empire Avenue</a>. It took me a while to get a handle on what moves the prices, and I&#8217;m still learning.  With some help from <a
href="http://chris.pirillo.com/">Chris Pirillo</a>, I think I&#8217;ve finally got a good handle on it and he&#8217;s helped me start a tool that can help you build a sound Empire Avenue portfolio too.</p><p><span
id="more-2442"></span>I first came to learn about Empire Avenue when Jesse Stay made a few blog posts about it where he writes about Empire Avenue as <a
href="http://www.staynalive.com/2011/04/empire-avenue-is-catalyst-for-new.html">a catalyst for the new economy</a> and <a
href="http://www.staynalive.com/2011/05/new-frontier-of-capitalism.html">the new frontier of capitalism</a>.  Both articles were excellent, but my interest hadn&#8217;t quite piqued until my good friend Bwana posted his <a
href="http://www.bwana.org/2011/05/07/empire-avenue-just-plain-fun/">thoughts on Empire Avenue</a> and he referred me to <a
href="http://chris.pirillo.com/my-empire-avenue-strategy-and-tips/">Chris Pirillo&#8217;s tips on Empire Avenue</a>.</p><h3>Two Ways to Make Eaves</h3><p>Eaves are the Empire Avenue (virtual) currency.  Being a numbers guy and with data analysis being my day job, I wanted to learn how to play the Empire Avenue exchange.  I figured I could probably put together some tools to earn some virtual money, just as I did in <a
href="http://geeklad.com/urban-rivals-market-bot">Urban Rivals</a>.</p><p>When it comes down to it, there are two ways to make Eaves in Empire Avenue with your investments:</p><ul><li>By earning dividends from what I will henceforth refer to as stocks (which are actually people or companies &#8211; i.e. entities with social networking accounts)</li><li>By buying stocks for a low price and selling at a higher price</li></ul><p>Fundamentally speaking it&#8217;s pretty simple, but in order to determine what constitutes a good investment, you need to learn what drives both dividends and stock prices.  It became very clear to me when Chris Pirillo told me:</p><blockquote><ul><li>Stock price = buying interest from others</li><li>Dividends = your (social networking) activity (both on and off-site)</li></ul></blockquote><h3>Dividend Yield</h3><p>Chris Pirillo&#8217;s strategy is to identify stocks that provide a high dividend, relative to the stock price.  I like this strategy very much, because it is quite conservative.  If you find a good dividend producer, the stock price could remain stagnant or even drop, and you still make money.  While you own the stock, you will continue to earn daily dividends, which come from the daily social networking activities of the person/company.</p><p>This strategy also applies to real stock exchanges, where investors might purchase a stock that has an attractive <strong>dividend yield</strong>.  Dividend yield is calculated by dividing the dividends paid per share by the stock price.  It&#8217;s a good measure to use to decide whether or not a stock might be a good investment, in terms of the dividends it will provide relative to the purchase price of the stock.</p><p>Because I was attracted to Chris&#8217; strategy of focusing on high dividend yielding stocks, I started developing my own Chrome Extension to provide some investment analysis on Empire Avenue stocks.  Chris provided a great deal of help in developing the tool, with suggestions on what to add.  In addition to providing dividend yields, it also provides break even information (which I will explain in a bit) as well as current profitability info for the stocks you currently own.</p><h3>Capital Appreciation</h3><p>Just as one might buy real life stocks low and sell high, that same concept applies to Empire Avenue.  In real life stock markets, this is referred to as <b>capital appreciation</b>.  You can certainly use dividend yield to decide whether or not a stock is still relatively inexpensive compared to the dividends it provides.  Chris also uses this as an indicator for whether or not a stock has room to grow in price.</p><p>I think this is a decent strategy as well, however, I would not rely on it alone.  The price of a stock is driven by the demand to buy it.  If a lot of people want to buy it, the stock price will move up.  By the same token, if the stock has appeared to plateau, it may drive individuals to sell it which in turn would drive the stock price down.  The speculative nature of these ups and downs can make investing based on price alone somewhat risky.</p><p>Until more tools such as mine and <a
href="https://chrome.google.com/webstore/detail/nicoicbaoinjgpcclfjdkfimngkgogdl">Eddie Ringle&#8217;s</a> (I will likely incorporate my calculations into his extension eventually, as he has his open sourced and <a
href="https://github.com/eddieringle/p3_eav">posted to Git</a>) come out and provide additional valuation metrics and analysis, there is also the human nature of thinking because the share price is high the stock is expensive, which is mistake many would-be investors make.  One cannot value a stock as inexpensive or expensive based on share price alone.  It must be placed into context with valuation metrics such as dividend yield.</p><p>For example, my stock <a
href="http://www.empireavenue.com/GEEKLAD?t=zb6nzta0">e(GEEKLAD)</a> is currently trading for 13.620 and Chris&#8217; stock <a
href="http://www.empireavenue.com/PIRILLO?t=zb6nzta0">e(PIRILLO)</a> is trading for 156.32.  If you were to value our stocks on share price alone, you would say mine is cheap and Chris&#8217; is expensive.  However, if you used dividend yield to valuate our stocks, Chris&#8217; could be considered much cheaper.  His provides more than a 1% dividend yield, whereas mine does not even provide 0.50% dividend yield.</p><p>On the other hand, there is still that human factor where most individuals would have the tendency to say Chris&#8217; stock is more expensive than mine, and I would suspect that at his current price his stock probably won&#8217;t appreciate as fast as mine.  Also, because he has many more outstanding shares, it would take much more volume for his stock to move rapidly than it would take for my stock to move.  As the outstanding shares increase, the relative volume will probably decrease, so you&#8217;ll see slower acceleration in the stock price.</p><h3>My Chrome Extension</h3><p>My plugin provides you with the following information when you either view a stock&#8217;s profile page (when you are logged into Empire Avenue):</p><ul><li><b><u>Daily Dividend Yield</u></b>: This the calculation of the daily dividend per share divided by the share price.  In Chris&#8217; experience, 1% is a good yield, 2% is extremely good, and 3% is nearly unheard of.</li><li><b><u>Approximate Dividend Pay Back (Days)</u></b>This is how long it would take you to earn back the money you paid to buy the stock, and cover (an assumed) 5% commission as well as the 5% commission you would need to pay when you sell it.</li><li><b><u>Current Break Even</u></b>: This is the share price the stock would have to increase to, in order to cover the 5% purchase commission and 5% sale commission if the stock were purchased at the current price.</li></ul><p>In addition, for stocks you already own you will also see:</p><ul><li><b><u>Your Average Purchase Price</u></b>: This is your average purchase price, excluding commissions.</li><li><b><u>Your Breakeven Price</u></b>: This is where the stock price has to be for you to recoup your purchase price, purchase commission (assumed at 5%) and sale commission as well.</li><li><b><u>Your Real Gain per Share</u></b>: This is how much you&#8217;ve actually made per share, taking account your purchase commission and your sale commission if you were to sell at the current share price.</li><li><b><u>Your Real Total Gain</u></b>: This is how much you&#8217;ve actually made in total, taking into account commissions for the purchase and sale and your average purchase price, were you to sell the price at the current share price.</li></ul><p>Here&#8217;s a screenshot of my investment in <a
href="http://www.empireavenue.com/BWANA?t=zb6nzta0">e(BWANA)</a>:</p><p><img
src="http://geeklad.com/wp-content/uploads/2011/05/empire-avenue-investment-analyzer-screenshot.png?cda6c1" alt="" title="empire-avenue-investment-analyzer-screenshot" class="aligncenter size-full" /></p><p>To see this in action, visit your portfolio/lists at <a
href="http://www.empireavenue.com/influencer/portfolio">http://www.empireavenue.com/influencer/portfolio</a>, then click on any stock to view the stats as you see them in the screenshot above.  You can also see those stats if you visit a stock profile page.  For profile pages of stocks you own, you&#8217;ll see your profitability stats.</p><p>It is very important to make sure you cover your purchase/sale commissions when you trade, otherwise you could very well sell a stock you think you&#8217;ve made money on, but you won&#8217;t be able to cover the 10.5% or so you&#8217;ll pay in commissions.  Say what?  Why 10.5%???  To calculate the gain, you can take 105% and divide it by 95%, which gives you a little over 110.5%.  That 10.5% represents the gain from your purchase price that you need to cover your purchase and sale commissions.</p><p>If you make a hot buy that has a higher purchase commission, your break even is even higher.  Unfortunately, neither the website or API (from what I can tell) provide any info on commissions you&#8217;ve paid in your transactions, so I have to assume you paid 5%.  If you paid 30% commission and pay 5% on the sale, your pay back would be 36.8% above your purchase price (130% divided by 95%).</p><p>So do not be alarmed when you view a stock in your portfolio and my plugin says you currently have a loss.  It&#8217;s because the stock hasn&#8217;t moved high enough to cover your commissions.  However, if you have a stock that yields 1% dividends, your dividends will have covered your commissions in 11 days or so.  In a future version of the extension, I want to account for accumulated dividends to get a true ROI calculation, which would be:</p><p><i>Sale Price &#8211; Sale Commissions &#8211; Purchase Price &#8211; Purchase Commissions <b> + Accumulated Dividends</b></i></p><p>What Chris previously referred to as ROI (previous to the discussions I had with him), is actually dividend yield.  ROI would be calculated as I have stated in my formula above, for investments currently being held.  If I can get to a true ROI calculation that includes accumulated dividends, my extension will be that much better.</p><p>So, give it a shot and <strike><a
href="#">download the Empire Avenue Investment Analyzer Chrome extension</a></strike> <a
href="https://chrome.google.com/webstore/detail/nicoicbaoinjgpcclfjdkfimngkgogdl">download the P<sup>3</sup> for Empire Avenue Chrome extension</a>.  Let me know what suggestions you may have by leaving comments here, or if you run into any bugs.  Feel free to ask me any questions about investing on Empire Avenue as well, and I&#8217;ll be glad to try to answer them.  Good luck and happy investing!</p><p>If you like my extension, feel free to show your appreciation and pick up a few shares of <a
href="http://www.empireavenue.com/GEEKLAD?t=zb6nzta0">e(GEEKLAD)</a>.</p> 
<p><a href="http://feedads.g.doubleclick.net/~a/-qlLepsJWrEt_KO2kqhtNuaRtpM/0/da"><img src="http://feedads.g.doubleclick.net/~a/-qlLepsJWrEt_KO2kqhtNuaRtpM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/-qlLepsJWrEt_KO2kqhtNuaRtpM/1/da"><img src="http://feedads.g.doubleclick.net/~a/-qlLepsJWrEt_KO2kqhtNuaRtpM/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=kBYLKmLavBI:W9gO10LOfPs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=kBYLKmLavBI:W9gO10LOfPs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=kBYLKmLavBI:W9gO10LOfPs:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=kBYLKmLavBI:W9gO10LOfPs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=kBYLKmLavBI:W9gO10LOfPs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=kBYLKmLavBI:W9gO10LOfPs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=kBYLKmLavBI:W9gO10LOfPs:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=kBYLKmLavBI:W9gO10LOfPs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/GeekLad/~4/kBYLKmLavBI" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://geeklad.com/playing-empire-avenue/feed</wfw:commentRss> <slash:comments>20</slash:comments> <feedburner:origLink>http://geeklad.com/playing-empire-avenue</feedburner:origLink></item> <item><title>Free WordPress Store for Amazon Associates</title><link>http://feeds.geeklad.com/~r/GeekLad/~3/dSo57hA4ciE/free-wordpress-store-for-amazon-associates</link> <comments>http://geeklad.com/free-wordpress-store-for-amazon-associates#comments</comments> <pubDate>Tue, 19 Apr 2011 01:15:31 +0000</pubDate> <dc:creator>GeekLad</dc:creator> <category><![CDATA[Make Money Online]]></category> <category><![CDATA[how to make money]]></category> <category><![CDATA[wordpress plugin]]></category><guid isPermaLink="false">http://geeklad.com/?p=2300</guid> <description><![CDATA[Some time ago, my web host disabled the server-side script for my Amazon Niche Store due to the large load it was causing on the web server.  Unfortunately, this rendered the plugin useless and many Amazon Niche Stores died along with it.  I&#8217;ve essentially rewritten the entire plugin, [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://geeklad.com/wp-content/uploads/2009/06/amazon-logo-thumb.png?cda6c1"><img
src="http://geeklad.com/wp-content/uploads/2009/06/amazon-logo-thumb.png?cda6c1" alt="" title="amazon-logo-thumb.png" width="158" height="35" class="alignleft size-full wp-image-1557" style="border: 0 none;" /></a>Some time ago, my web host disabled the server-side script for my <a
href="http://geeklad.com/build-your-own-amazon-niche-store">Amazon Niche Store</a> due to the large load it was causing on the web server.  Unfortunately, this rendered the plugin useless and many Amazon Niche Stores died along with it.  I&#8217;ve essentially rewritten the entire plugin, making it easier to use and improved its interaction with my server to prevent future issues.  I&#8217;m proud to announce the <b>Free WordPress Store for Amazon Associates</b>.</p><p><span
id="more-2300"></span><br
/><h3>Plugin Overview</h3><p>The plugin is quite easy to use and can be set up in three simple steps:</p><ol><li>Set up the overall configuration for your store pages</li><li>Create new store pages</li><li>Select which products you want displayed</li></ol><p>Store pages and product detail pages are all automatically generated for you, and are set up as regular WordPress pages.  The <b>Product Management</b> screens allow you to quickly and easily place the product detail pages into <i>published</i>, <i>draft</i>, or <i>trash</i> status, rather than having to manually do this via the WordPress interface (although you can do that if you wish).  You can also easily modify the detailed product descriptions by simply modifying the content of the detail product pages.</p><h3>Plugin Features</h3><ul><li>Support for international locales, including: USA, United Kingdom, Canada, France, Germany and Japan.</li><li>Easy creation of store pages and product detail pages at the click of a button</li><li>Easy management of product selection</li><li>Product detail pages are regular WordPress pages, making it easy to update descriptions</li><li>Automatic pagination of store pages</li><li>Ajax loading of paginated store pages, for quick loading and pleasant visitor experience</li><li>Ajax submission and loading of items to the shopping cart</li></ul><h3>Change Log</h3><ul><li><b>1.0.0</b>: Initial Release.</li><li><b>1.0.1</b>: Fixed a cosmetic bug with store/cart displaying -1 when refreshed by Ajax.</li><li><b>1.0.2</b>: Fixed a critical bug with cart submissions in Firefox and potentially other browsers.</li><li><b>1.0.3</b>: Fixed a cosmetic bug with the bottom of the product display boxes being cut off on the store pages.</li><li><b>1.1.0</b>: Updated code to add non-Wordpress.org hosted updates.</li></ul><p
style="text-align: center"><a
style="border-right: #888888 1px solid; padding-right: 8px; border-top: #888888 1px solid; padding-left: 8px; font-weight: bold; padding-bottom: 4px; border-left: #888888 1px solid; padding-top: 4px; border-bottom: #888888 1px solid" title="Download Version 1.1.0 of the Plugin" href="http://geeklad.com/tools/free-wordpress-store-amazon.zip?cda6c1">Download Version 1.1.0 of the Plugin</a></p><p>For more details on using the plugin, be sure to check out the readme.txt included with the plugin.</p><h3>Special Notice</h3><p>Similar to the <i>Amazon Niche Store</i> plugin, there is one condition of which you need to be aware.  10% of the time, when your site visitors check their cart, I will replace your Amazon Associates tracking ID with my own.  The other <b>90% of the time your Amazon Associates tracking ID will be used for the cart checkout</b>.</p><p>If you do not agree to this condition, then do not download and use the plugin.</p><h3>Screenshots</h3><ul><li><a
rel="lightbox:aa" title="Amazon Store Configuration" href="http://geeklad.com/wp-content/uploads/2011/04/free-wordpress-store-amazon-admin-screen.png?cda6c1">Amazon Store Configuration Page</a></li><li><a
rel="lightbox:aa" title="Product Management Screen" href="http://geeklad.com/wp-content/uploads/2011/04/free-wordpress-store-amazon-manage-products1.png?cda6c1">Product Management Screen</a></li><li><a
rel="lightbox:aa" title="Amazon Store Page" href="http://geeklad.com/wp-content/uploads/2011/04/free-wordpress-store-amazon-store-page.png?cda6c1">Amazon Store Page</a></li><li><a
rel="lightbox:aa" title="Shopping Cart" href="http://geeklad.com/wp-content/uploads/2011/04/free-wordpress-store-amazon-cart.png?cda6c1">Shopping Cart</a></li><li><a
rel="lightbox:aa" title="Message Displayed after User Clicks Proceed to Checkout" href="http://geeklad.com/wp-content/uploads/2011/04/free-wordpress-store-amazon-cart-submit.png?cda6c1">Message Displayed after User Clicks Proceed to Checkout</a></li><li><a
rel="lightbox:aa" title="Amazon Page that Appears after Shopping Cart is Submitted" href="http://geeklad.com/wp-content/uploads/2011/04/free-wordpress-store-amazon-cart-merge.png?cda6c1">Amazon Page that Appears after Shopping Cart is Submitted</a></li></ul><h3>Live Demo</h3><p>If you&#8217;d like to see it in action, check out the <a
href="http://geeklad.com/amazon-store-demo">live demo of the Free WordPress Store for Amazon Associates</a>.</p><h3>Suggestions and Bugs</h3><p>If you encounter any bugs with the plugin, or have any suggestions as to how I can improve it, please feel free to post comments here.  Before submitting a bug, be sure you have the latest version of the plugin.</p> 
<p><a href="http://feedads.g.doubleclick.net/~a/MRQ8hSnBu0If3X-Gd3KVxv4jK78/0/da"><img src="http://feedads.g.doubleclick.net/~a/MRQ8hSnBu0If3X-Gd3KVxv4jK78/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/MRQ8hSnBu0If3X-Gd3KVxv4jK78/1/da"><img src="http://feedads.g.doubleclick.net/~a/MRQ8hSnBu0If3X-Gd3KVxv4jK78/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=dSo57hA4ciE:m-Xt7Fb8-8g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=dSo57hA4ciE:m-Xt7Fb8-8g:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=dSo57hA4ciE:m-Xt7Fb8-8g:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=dSo57hA4ciE:m-Xt7Fb8-8g:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=dSo57hA4ciE:m-Xt7Fb8-8g:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=dSo57hA4ciE:m-Xt7Fb8-8g:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=dSo57hA4ciE:m-Xt7Fb8-8g:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=dSo57hA4ciE:m-Xt7Fb8-8g:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/GeekLad/~4/dSo57hA4ciE" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://geeklad.com/free-wordpress-store-for-amazon-associates/feed</wfw:commentRss> <slash:comments>38</slash:comments> <feedburner:origLink>http://geeklad.com/free-wordpress-store-for-amazon-associates</feedburner:origLink></item> <item><title>Urban Rivals Market Bot</title><link>http://feeds.geeklad.com/~r/GeekLad/~3/WoyLCaYi5vw/urban-rivals-market-bot</link> <comments>http://geeklad.com/urban-rivals-market-bot#comments</comments> <pubDate>Wed, 23 Mar 2011 02:43:25 +0000</pubDate> <dc:creator>GeekLad</dc:creator> <category><![CDATA[Gaming]]></category> <category><![CDATA[Internet]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Google Chrome]]></category><guid isPermaLink="false">http://geeklad.com/?p=2260</guid> <description><![CDATA[Update: Shortly after I posted this, the good folks of Urban Rivals politely asked me to remove the post and I politely declined.  About a week later, someone informed me changes were made to the market, and the first few sales for each card are now displayed as images [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://geeklad.com/wp-content/uploads/2011/03/urban-rivals-logo.png?cda6c1" alt="urban-rivals-logo" title="urban-rivals-logo" width="204" height="103" class="alignleft size-full wp-image-2261" style="border: 0 none;" /><i><b><u>Update</u></b>: Shortly after I posted this, the good folks of Urban Rivals politely asked me to remove the post and I politely declined.  About a week later, someone informed me changes were made to the market, and the first few sales for each card are now displayed as images rather than HTML.  He said up until then, the bot was working great for him, but the changes to the market have caused the bot to stop working.  Unless someone is able to fix it with some sort of image to text JavaScript library (I think there are some libraries that do this w/ captchas), the script is effectively dead.  I will leave the source posted, in case someone is able to repair it.</i></p><p>Some time ago, a friend got me into an online card game called <a
href="http://www.urban-rivals.com/">Urban Rivals</a>.  It is similar to other card games such as Magic the Gathering, but played online either via iPhone/iPad app or in your browser.  One aspect of the game that quickly got my attention (other than the game itself), was the card marketplace where you can buy and sell playing cards.</p><p>It didn&#8217;t take long for me to realize that it was an inefficient market.  Profitable trades presented themselves quite regularly, and with a bit of automation it would be easy to take advantage of the market.  I proceeded with developing a Google Chrome extension that would allow me to do so, and it worked quite well.</p><p><span
id="more-2260"></span>Over the course of a few days, I had it up and running, automating both buying and selling of cards.  Essentially, it continually scans the marketplace until a profitable buy appears, buys the card (or cards), and immediately posts them for sale at one clintz (the in-game currency) below the lowest price.  I told a friend of mine about it, and with some trepidation at first, he decided to try it out and helped me test and tweak it.  Eventually, he realized it worked great and used it extensively as I did.</p><p>When it was all said and done, I had accumulated probably over 6 million worth of clintz and cards, having started with just a few thousand.  My friend had probably accumulated on the order of about 5 million.  Ultimately, my friend and I were both banned.  I told him if ever I did get banned, I would likely release the extension into the wild to see what sort of havoc it might wreak on the marketplace.  Well, I did get banned, so here we are.  Even before I was banned, I had a morbid curiosity to learn what might happen if I were to give it to more than just one or two other players.  Having been banned was just the excuse I was looking for, as I (and my friends) no longer have a vested interest in keeping it a secret.</p><h3>Words of Wisdom in Using the Urban Rivals Market Bot</h3><p>First and foremost, <strong><em>Use at Your Own Risk.</em></strong><br
/> If the good folks of Urban Rivals find out you&#8217;re using a bot, they will ban you.  If you use it in moderation, you may not get caught.  Of course, I can make no guarantees.  If you get banned for using this, don&#8217;t blame me as you&#8217;ve been warned!</p><p><strong><em>Be very careful if you set up a separate account.</em></strong><br
/> My friend set up an account for using the bot, in case if he got banned, so he would still have the original account.  Unfortunately this plan backfired on him, as he was banned not for the bot but both accounts were banned for having duplicate accounts.</p><p>If you do use decide to set up an additional account, do not ever connect to them from the same internet connection.  You could try using <a
href="https://www.torproject.org/">Tor</a> to connect from an anonymous internet connection for the bot account, and use your regular internet connection for your regular account.  I haven&#8217;t tried this, but this method of using multiple accounts would probably work without a problem.  You just have to be very careful you never connect via the same method/connection.</p><p><strong><em>It may not work for long, or at all at this point.</em></strong><br
/> Since I no longer have a valid Urban Rivals account, I have no mechanism to see if it even still works.  The last time I used it, it worked without issue so it&#8217;s likely it still works, but I make no guarantees.  So that my &#8220;legacy&#8221; may still live on, I&#8217;ll include the source code as well.</p><p>If you&#8217;re good with JavaScript, you can probably figure out my mess of code and fix things if they&#8217;ve broken.  If you do fix any bugs you see, feel free to send me the new code and I&#8217;ll post it here.</p><p><strong><em>Be prepared for personal attacks.</em></strong><br
/> Because the bot works by looking for good deals, occasionally it picks up deals that were posted in error.  Sometimes people forget a 0, and end up posting a card worth thousands for hundreds, or even hundreds of thousands for tens of thousands.  The bot will pick these up for a song and repost them for sale and make 10x profit.  Of course, when this happens it sometimes solicits inflammatory language from those that posted the price in error.</p><p>I would gladly exchange the card back to players that asked politely and patiently.  Either I would tell them to sell me a cheap card for slightly less than the value of the card so I could still make a profit, or sell the card back to them (if I still had it) for a profit.  I would recommend you do the same, if you do not wish to draw the attention of the UR gods.  If you want to remain even more transparent, you may even wish to throw the impolite requestors a bone as well.</p><p>I would also recommend disabling your online presence for your UR login.  I think in many cases, the players I pissed off thought I was online, when in fact it was simply that my browser window was open conducting market transactions on my behalf.  In some cases, I was receiving many messages from incensed players within minutes of each other, but I did not see the messages for many hours later and sometimes even days.</p><p>When I finally realized my online presence was the reason I was receiving so many messages so quickly from the same angry players, I disabled my online presence.  This helped quite a bit to quell the angry messages coming in rapid succession, but they did still happen.  Be nice to those who make mistakes in their market transactions and ask you to sell their card back to them.</p><h3>Instructions</h3><ol><li>If you don&#8217;t have it, <a
href="http://www.google.com/chrome">download Google Chrome</a>, the best web browser known to man</p><li>Download and install the <a
href="http://geeklad.com/tools/Urban%20Rivals%20Market%20Bot.crx">Urban Rivals Market Bot</a> Extension for Google Chrome</li><li>Configure the bot however you like:<ul><li><strong>Enable Profitability Filter</strong>: This enables/disables the filtering of the market to only show profitable trades, according to the profitability settings.</p><li><strong>Enable Stars Filter</strong>: You can filter the market to only show cards with a certain number of stars<li><strong>Min and Max Price</strong>: The minimum and max price to filter on.  Cards less than the minimum or more than the maximum will be removed from the market list.<li><strong>Min Profit</strong>: The minimum amount of profit to make on the purchase and sale of a card, if sold for 1 clintz less than the lowest listed card.  Any cards that do not meet this criteria will not be displayed in the market.<li><strong>Min Percent Profit</strong>: The minimum percent profit to make on the purchase/sale.  Cards must meet both the min profit and min percent profit criteria to be displayed.<li><strong>Autobuy</strong>: Buy cards that meet the profit filter criteria.  Without the profitability filter enabled, this does nothing.<li><strong>Autosell</strong>: Sell cards that are autobought.  Without autobuy enabled, this won&#8217;t do anything.  If disabled while autobuy runs, cards will be accumulated in a profitable manner, but not sold.<li><strong>Refresh Delay</strong>: How many seconds to wait before refreshing the market page to try autobuying again.  You can set it to 0.  If you set it too fast, you&#8217;ll probably get a captcha, at which point the bot will stop working until you manually clear the captcha.<li><strong>Max # of Cards to Buy</strong>: Sometimes there are profitable trades where there is a big breakpoint in the price of cards.  You can buy perhaps the two or three cheapest cards, and sell at the price of the remaining cheapest card.  If you want to be conservative, just leave it at 1.<li><strong>Max Premium on Sale</strong>: Sometimes players buy up a lot of cards to raise the lowest price so they can sell the cards they buy at a higher price.  This is a safeguard to avoid buying/selling a card when this has happened, otherwise you could fall victim to this market manipulation tactic.  This is how far you are willing to resell a card marked up above the lowest price of the day, week, and month.  If you set it too high, you could end up paying too much for a card and you won&#8217;t be able to sell it profitably.  I typically ran it at 10 percent, which served me well.</ul><li>Visit the first page of the UR market.  Be sure to sort the market by date, with the most recent listings first (this is the default, so you really shouldn&#8217;t have to change anything).  The page will continually refresh according to the refresh delay setting, and as profitable listings are found it will attempt to buy them and resell them 1 clintz lower than the cheapest.  Please note, that it will only deal with cards with maxed experience.</ol><p><strong>The Autosale of Doubles Feature</strong><br
/> One last note on using the plugin.  If your sales expire, you may end up with many doubles in your collection.  I eventually grew tired of manually selling all of my doubles, so I also added functionality to autosell doubles when visiting my collection page.  When you visit your collection page, if you have doubles you&#8217;ll be prompted if you want to sell them.</p><p>If you use this feature to sell a lot of doubles at once (perhaps 50 or more), it could result in a temporary ban from using the market.  This is a bit more severe than being captchad, as you can&#8217;t do anything but wait on the order of about 7-8 hours to access the marketplace again.  Don&#8217;t panic if it does happen, but you won&#8217;t be able to access ANY market pages (even your pending sales, sold cards, etc.) until enough time has passed.  I ultimately wanted to make this a feature that could be enabled/disabled in the settings popup, but I never got around to implementing that.</p><h3>A Small Request</h3><p>If someone could do me a favor, please contact <a
href="http://www.urban-rivals.com/player/?id_player=13219177">mrdisco</a> and tell him about my bot.  He went on a rant in the forums to tell everyone what an asshole I am (scroll to the bottom of <a
href="http://www.urban-rivals.com/community/forum/?mode=viewsubject&#038;id_subject=1488133&#038;language=2#37389312">this post</a> to read it).  Someone please send him the link to this post.  At least he can recoup his clintz using my bot, and even make a good bit more.</p><p>I attempted to contact him via UR messaging to tell him I would have gladly refunded him, if he had given me a chance to respond.  He sent me a barrage of messages in a span of maybe an hour, probably while I was sleeping or at work, so I never got to respond.  By the time I was able to respond, he added me to is ignore list so I couldn&#8217;t message him on UR although I wanted to.</p><p>At the time, I decided it best I not even try to explain myself in the forum.  He obviously had no interest in hearing what I had to say since he never even gave me the chance to explain.  At this point, I think this post is sufficient explanation and perhaps he may even no longer feel ill will.</p><h3>Final Thoughts</h3><p>Unfortunately, I was banned from UR (I&#8217;m sure mrdisco will be happy about that) so I am not able to post this in the UR forums, so here it is on my blog.  If any discussion does take place in the UR forums about it, please feel free to repost it here.  I&#8217;m very curious to know what people might say about it, if anything at all.</p><p>Oh, I almost forgot the source code!</p><p><a
href="http://geeklad.com/tools/Urban%20Rivals%20Market%20Bot.zip?cda6c1">Download the Urban Rivals Market Bot Source Code</a></p><p>The code is ugly but it works (at least it did, when I last used it).  It&#8217;s all screen scraping with regular expressions in JavaScript.  If you know JavaScript, you can probably figure it out for the most part.  If you know regular expressions as well, then you can easily bend it to your will.  If you do, feel free to reach out to me if you keep the code working and up-to-date.</p><p>Enjoy!  Let me know if you have any questions about the plugin.  Unfortunately, without a UR account I really can&#8217;t do anything about fixing bugs if there are any, but perhaps there&#8217;s a JavaScript/regular expression guru out there that can take hold of the Urban Rivals Market Bot torch.</p> 
<p><a href="http://feedads.g.doubleclick.net/~a/9lxt_1eO0Xg9GBwABCDYJyTkV08/0/da"><img src="http://feedads.g.doubleclick.net/~a/9lxt_1eO0Xg9GBwABCDYJyTkV08/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/9lxt_1eO0Xg9GBwABCDYJyTkV08/1/da"><img src="http://feedads.g.doubleclick.net/~a/9lxt_1eO0Xg9GBwABCDYJyTkV08/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=WoyLCaYi5vw:5dVjXXRjGZg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=WoyLCaYi5vw:5dVjXXRjGZg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=WoyLCaYi5vw:5dVjXXRjGZg:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=WoyLCaYi5vw:5dVjXXRjGZg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=WoyLCaYi5vw:5dVjXXRjGZg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=WoyLCaYi5vw:5dVjXXRjGZg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=WoyLCaYi5vw:5dVjXXRjGZg:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=WoyLCaYi5vw:5dVjXXRjGZg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/GeekLad/~4/WoyLCaYi5vw" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://geeklad.com/urban-rivals-market-bot/feed</wfw:commentRss> <slash:comments>21</slash:comments> <feedburner:origLink>http://geeklad.com/urban-rivals-market-bot</feedburner:origLink></item> </channel> </rss><!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 158/291 queries in 0.197 seconds using disk: basic
Object Caching 3032/3372 objects using disk: basic

Served from: geeklad.com @ 2012-05-07 13:01:29 -->

