<?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>Wed, 01 Feb 2012 14:25:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.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>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 show you how to download video from [...]]]></description>
			<content:encoded><![CDATA[ 
<script type="text/javascript"><!--
google_ad_client = "pub-0520948241602494";
/* GeekAd LinkAd */
google_ad_slot = "4909235183";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<p>
<!– google_ad_section_start –>
<p><img src="http://geeklad.com/wp-content/uploads/2012/01/you-tube-logo.png" 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" 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"><img src="http://geeklad.com/wp-content/uploads/2012/01/identifying-video-file-to-download.png" 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" 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>

<!– google_ad_section_end –>
<p><a href="http://feedads.g.doubleclick.net/~a/9FdWHF9ry76wHPs-_xfx_Uw35m0/0/da"><img src="http://feedads.g.doubleclick.net/~a/9FdWHF9ry76wHPs-_xfx_Uw35m0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/9FdWHF9ry76wHPs-_xfx_Uw35m0/1/da"><img src="http://feedads.g.doubleclick.net/~a/9FdWHF9ry76wHPs-_xfx_Uw35m0/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>0</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[Gadgets]]></category>
		<category><![CDATA[Android]]></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 to put a little elbow grease into [...]]]></description>
			<content:encoded><![CDATA[
<!– google_ad_section_start –>
<p><img src="http://geeklad.com/wp-content/uploads/2012/01/connect.png" 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" 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" 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" 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" 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"><img src="http://geeklad.com/wp-content/uploads/2012/01/settings-170x300.jpg" 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"><img src="http://geeklad.com/wp-content/uploads/2012/01/applications-170x300.jpg" 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"><img src="http://geeklad.com/wp-content/uploads/2012/01/development-170x300.jpg" 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"><img src="http://geeklad.com/wp-content/uploads/2012/01/web-browser-300x188.jpg" 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"><img src="http://geeklad.com/wp-content/uploads/2012/01/downloads-170x300.jpg" 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"><img src="http://geeklad.com/wp-content/uploads/2012/01/install-tetherbot-170x300.jpg" 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" 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"><img src="http://geeklad.com/wp-content/uploads/2012/01/start-socks-server-170x300.jpg" 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' alt=':)' class='wp-smiley' /> </p>

<!– google_ad_section_end –>
<p><a href="http://feedads.g.doubleclick.net/~a/7MgcKObRrzpVljof8Jvj1HI9res/0/da"><img src="http://feedads.g.doubleclick.net/~a/7MgcKObRrzpVljof8Jvj1HI9res/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/7MgcKObRrzpVljof8Jvj1HI9res/1/da"><img src="http://feedads.g.doubleclick.net/~a/7MgcKObRrzpVljof8Jvj1HI9res/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[Gadgets]]></category>
		<category><![CDATA[Operating Systems]]></category>
		<category><![CDATA[Android]]></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 I am to try out Ice Cream [...]]]></description>
			<content:encoded><![CDATA[
<!– google_ad_section_start –>
<p><img src="http://geeklad.com/wp-content/uploads/2012/01/ics-logo.png" 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>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>

<!– google_ad_section_end –>
<p><a href="http://feedads.g.doubleclick.net/~a/6pJHBhKYxsGD_-lYdgTu3W9x2wQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/6pJHBhKYxsGD_-lYdgTu3W9x2wQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/6pJHBhKYxsGD_-lYdgTu3W9x2wQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/6pJHBhKYxsGD_-lYdgTu3W9x2wQ/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 history. Google has made search history [...]]]></description>
			<content:encoded><![CDATA[
<!– google_ad_section_start –>
<p><img src="http://geeklad.com/wp-content/uploads/2012/01/notepad-icon.png" 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><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>

<!– google_ad_section_end –>
<p><a href="http://feedads.g.doubleclick.net/~a/h84_btnTjcG0B4M94UulyPltedA/0/da"><img src="http://feedads.g.doubleclick.net/~a/h84_btnTjcG0B4M94UulyPltedA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/h84_btnTjcG0B4M94UulyPltedA/1/da"><img src="http://feedads.g.doubleclick.net/~a/h84_btnTjcG0B4M94UulyPltedA/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 happen. Recently, I started playing in a fantasy [...]]]></description>
			<content:encoded><![CDATA[
<!– google_ad_section_start –>
<p><a href="http://empireavenue.com/?t=zb6nzta0"><img src="http://geeklad.com/wp-content/uploads/2011/05/empire-avenue-logo.png" 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" 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>

<!– google_ad_section_end –>
<p><a href="http://feedads.g.doubleclick.net/~a/knyfipBFrhoEBLQiTONN_TXwDms/0/da"><img src="http://feedads.g.doubleclick.net/~a/knyfipBFrhoEBLQiTONN_TXwDms/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/knyfipBFrhoEBLQiTONN_TXwDms/1/da"><img src="http://feedads.g.doubleclick.net/~a/knyfipBFrhoEBLQiTONN_TXwDms/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>19</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, making it easier to use and improved [...]]]></description>
			<content:encoded><![CDATA[
<!– google_ad_section_start –>
<p><a href="http://geeklad.com/wp-content/uploads/2009/06/amazon-logo-thumb.png"><img src="http://geeklad.com/wp-content/uploads/2009/06/amazon-logo-thumb.png" 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">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">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">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">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">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">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">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>

<!– google_ad_section_end –>
<p><a href="http://feedads.g.doubleclick.net/~a/oSdLyxTEp4GpVCCrxxkwYLfJeA0/0/da"><img src="http://feedads.g.doubleclick.net/~a/oSdLyxTEp4GpVCCrxxkwYLfJeA0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/oSdLyxTEp4GpVCCrxxkwYLfJeA0/1/da"><img src="http://feedads.g.doubleclick.net/~a/oSdLyxTEp4GpVCCrxxkwYLfJeA0/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>31</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 rather than HTML. He said up [...]]]></description>
			<content:encoded><![CDATA[
<!– google_ad_section_start –>
<p><img src="http://geeklad.com/wp-content/uploads/2011/03/urban-rivals-logo.png" 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><!-- more -->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">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>

<!– google_ad_section_end –>
<p><a href="http://feedads.g.doubleclick.net/~a/5zM-FrNroynOwEb45nOa55A7ctg/0/da"><img src="http://feedads.g.doubleclick.net/~a/5zM-FrNroynOwEb45nOa55A7ctg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/5zM-FrNroynOwEb45nOa55A7ctg/1/da"><img src="http://feedads.g.doubleclick.net/~a/5zM-FrNroynOwEb45nOa55A7ctg/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>20</slash:comments>
		<feedburner:origLink>http://geeklad.com/urban-rivals-market-bot</feedburner:origLink></item>
		<item>
		<title>Review on Logitech Revue and Google TV</title>
		<link>http://feeds.geeklad.com/~r/GeekLad/~3/YO0-ra3u6iY/review-on-logitech-revue-and-google-tv</link>
		<comments>http://geeklad.com/review-on-logitech-revue-and-google-tv#comments</comments>
		<pubDate>Fri, 31 Dec 2010 18:22:59 +0000</pubDate>
		<dc:creator>GeekLad</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google TV]]></category>
		<category><![CDATA[Logitech Revue]]></category>

		<guid isPermaLink="false">http://geeklad.com/?p=2195</guid>
		<description><![CDATA[Earlier this year, Google announced a new product called Google TV. In late October, they also announced a Google TV giveaway to 10,000 lucky developers. I was fortunate to become one of those lucky 10,000 and Google sent me a Logitech Revue just before Christmas. Overall, I think it&#8217;s a pretty cool gadget, but it [...]]]></description>
			<content:encoded><![CDATA[
<!– google_ad_section_start –>
<p><img src="http://geeklad.com/wp-content/uploads/2010/12/google-tv-logo.jpg" alt="Google-TV-Logo" title="Google-TV-Logo" class="alignleft size-full wp-image-2196" style="border: 0 none;" />Earlier this year, <a href="http://googleblog.blogspot.com/2010/05/announcing-google-tv-tv-meets-web-web.html">Google announced a new product called Google TV</a>.  In late October, they also announced a <a href="http://googletv.blogspot.com/2010/10/google-tv-is-coming-to-10000-lucky.html">Google TV giveaway to 10,000 lucky developers</a>.  I was fortunate to become one of those lucky 10,000 and Google sent me a <a href="http://bit.ly/gIki6Y" target="_blank">Logitech Revue</a> just before Christmas.  Overall, I think it&#8217;s a pretty cool gadget, but it does have some shortcomings.</p>
<p><span id="more-2195"></span><a name="Logitech Revue Device"><br />
<h3>Logitech Revue Device</h3>
<p></a><a href="http://bit.ly/gIki6Y" target="_blank"><img src="http://geeklad.com/wp-content/uploads/2010/12/logitech-revue.png" alt="logitech-revue" title="logitech-revue" width="455" height="500" class="aligncenter size-full wp-image-2198" style="border: 0 none; margin-left: auto; margin-right: auto;" /></a></p>
<p>The device itself is quite compact and comes with a small, lightweight keyboard (aka the &#8220;controller&#8221; as Logitech calls it).  The physical setup of the device couldn&#8217;t be simpler: plug the output from your cable set top box (STB) into the <strong>HDMI IN</strong> on the Revue, and then the <strong>HDMI OUT</strong> from the Revue into the TV.  If you use a home theatre for your audio, your setup may be slightly more involved, but it is still pretty simple to set up.  Just check out the <a href="http://revue.logitech.com/digitalhome/video?videoURL=Connecting_Your_Revue.mp4">Logitech Revue setup video</a> to see how easy it is.</p>
<p>You should be made aware that Google TV only has HDMI input/outputs on it.  You won&#8217;t be able to connect a cable box or television via component connections.  If you have older equipment, then Google TV may not be for you.<br />
<a name="Google TV Configuration"><br />
<h3>Google TV Configuration</h3>
<p></a>After you plug everything in and turn on the Revue, you&#8217;re taken through a wizard-like setup.  It&#8217;s relatively straight-forward, asking you questions about the model number for your cable box, television, and audio system.  It does take some time to go through the configuration, because after you have your network up and running it downloads and installs an update.</p>
<p>You can connect it to the Internet either via the built-in wireless connection or through an ethernet connection.  I find it annoying that there is no manual configuration for the network connection.  You cannot assign static IPs, gateways, DNS servers, and the like.  However, unless you&#8217;re a major geek like me, you are probably just fine with the automatic configuration it performs for you.<br />
<a name="Google TV Features"><br />
<h3>Google TV Features</h3>
<p></a>Just as <a href="http://www.youtube.com/watch?v=qyQb192-CPQ">Kevin Bacon&#8217;s biggest fan</a> demonstrates, Google TV is great for finding video content on whatever your heart desires.  It searches your television programming, <a href="http://www.netflix.com">Netflix</a>, <a href="http://amzn.to/ge28oE">Amazon On Demand</a>, <a href="http://www.youtube.com">YouTube</a>, and other web videos.  My biggest complaint about the television programming results is that if you don&#8217;t have a DVR that directly integrates with Google TV, it won&#8217;t automatically set up recordings for individual programs or series (aka TiVo season pass).  I have a TiVo, so when I see results for TV shows I want to record, I need to:</p>
<ul>
<li>Remember the date and time for the show.</li>
<li>Tune to the channel (this is all the Revue/Google TV does for you).</li>
<li>Navigate to the proper day of the show.  <strong><br /><em>Hint</strong>: If you also have a TiVo, you can use your controller to change the day in the guide by holding down the <img src="http://geeklad.com/wp-content/uploads/2010/12/logitech-revue-fn-key.png" alt="FN" title="FN" style="border: 0 none; padding: 0; margin: 0; position: relative; bottom: -3px; height: 15px;" /> key while pressing the <img src="http://geeklad.com/wp-content/uploads/2010/12/logitech-revue-rw-key.png" alt="rewind" title="rewind" style="border: 0 none; padding: 0; margin: 0; position: relative; bottom: -3px; height: 15px;"/> key to go to the previous day and the <img src="http://geeklad.com/wp-content/uploads/2010/12/logitech-revue-ff-key.png" alt="fast forward" title="fast forward" style="border: 0 none; padding: 0; margin: 0; position: relative; bottom: -3px; height: 15px;"/> key to go to the next day.</em></li>
<li>Navigate to the proper time of the show.<br /><em><strong>Hint:</strong>: If you also have a TiVo, use the <img src="http://geeklad.com/wp-content/uploads/2010/12/logitech-right-direction-key.png" alt="right directional" title="right directional" style="border: 0 none; padding: 0; margin: 0; position: relative; bottom: -3px;" /> key to move from selecting the day to selecting the time, and then press the <img src="http://geeklad.com/wp-content/uploads/2010/12/logitech-pg-up.png" alt="page up" title="page up" style="border: 0 none; padding: 0; margin: 0; position: relative; bottom: -5px;"/> and <img src="http://geeklad.com/wp-content/uploads/2010/12/logitech-pg-down.png" alt="page down" title="page down" style="border: 0 none; padding: 0; margin: 0; position: relative; bottom: -5px;" /> keys to quickly scroll through the time, to find the correct time for the program.</em></li>
<li>Manually navigate the DVR menu to record the program.  On the TiVo, it can be done with the directional pad and <img src="http://geeklad.com/wp-content/uploads/2010/12/logitech-ok.png" alt="logitech-ok" title="logitech-ok" style="border: 0 none; padding: 0; margin: 0; position: relative; bottom: -3px;" /> button.</li>
</ul>
<p>It&#8217;s a bit of a hassle, and it&#8217;s unfortunate that Google TV doesn&#8217;t feature better integration with most DVRs.</p>
<div style="text-align: center"><img src="http://geeklad.com/wp-content/uploads/2010/12/netflix-logo.png" alt="netflix-logo" title="netflix-logo" height="70" style="border: 0 none;" /> <img src="http://geeklad.com/wp-content/uploads/2010/12/pandora-logo.png" alt="pandora-logo" title="pandora-logo" height="70" style="border: 0 none;" /> <img src="http://geeklad.com/wp-content/uploads/2010/12/dlna-logo.png" alt="dlna-logo" title="dlna-logo" width="149" height="70" class="alignnone size-full wp-image-2232" style="border: 0 none;" /></div>
<p>Google TV also features Netflix and Pandora applications, which brings additional video and audio content to your television.  It&#8217;s great having a keyboard to search for movie and television titles in the Netflix application, as it is much less cumbersome than doing so on other devices with traditional remote controls.  You can also stream video if you have <a href="http://www.dlna.org/home">DNLA</a> compliant devices or software on a computer.  If you&#8217;re looking for a great free DNLA program for your computer, I highly recommend <a href="http://xbmc.org/">XBMC</a>.</p>
<p>There is also <a href="http://www.logitech.com/en-us/smartTV/accessories/devices/harmony-app-iphone-android">Harmony application for both iPhone and Android</a>.  With it, you can turn your iPhone, iPad, or Android phone into a remote control.  The Harmony application actually has more features for controlling your equipment than is available directly on the controller by default.  For example, for my television the Harmony application has buttons for directly selecting the different inputs on the television, as well as navigating the television&#8217;s setup menus.  Something which isn&#8217;t possible without <a href="http://revue.logitech.com/digitalhome/answers?a_id=19789&#038;c=1860,4008&#038;source=subcategory&#038;sub_cat=Moving%20Beyond%20the%20Basics">customizing the Revue controller</a>.</p>
<p>Google TV includes the Chrome web browser, which is very nice to have at your disposal as you&#8217;re watching television.  What&#8217;s that gal&#8217;s name on that movie?  What other movies has she been in?  Just launch the Chrome web browser and look her up on IMDB!  You can also browse and watch television at the same time, with the <strong>dual view</strong> feature.<br />
<a name="Logitech Revue Shortcomings"><br />
<h3>Logitech Revue Shortcomings</h3>
<p></a><a name="Lack of DVR Integration"><br />
<h4>Lack of DVR Integration</h4>
<p></a>One of the Revue&#8217;s shortcomings is it&#8217;s lack of direct integration with most DVRs.  As of right now, you can only get direct integration with a Dish Network DVR.  With a Dish DVR, Google TV can directly manage the DVR rather than having to control it via IR blaster (i.e. behave exactly like your remote control).  The Dish Network DVR integration also allows Google TV to search recordings on the DVR and directly set up recordings for Google TV search results.  I hope that some day Google TV will have similar integration with TiVo.  If it did, it would most certainly help to justify the $250 price tag.<br />
<a name="Lack of Storage"><br />
<h4>Lack of Storage</h4>
<p></a>While on the topic of DVRs, it is also unfortunate that the device itself is not a DVR.  At the initial price tag of $300, you would think it might have storage for recording programs, or at least the ability to add external storage.  Although the recent price cut to $250 is a bit more palatable, it is still unfortunate the device does not have the capability to record programs.  If it had the ability to do so, it would overcome the inability to control a DVR.  However, without either feature, it&#8217;s a pretty expensive gadget.<br />
<a name="Not a Universal Remote"><br />
<h4>Not a Universal Remote</h4>
<p></a>I was also very disappointed that the Logitech Revue can only control an AV unit, television, and cable box.  If you have other components (i.e. DVD or Blu Ray player), the Revue has no direct support for controlling those devices.  With the built-in IR blaster and external IR blasters, Logitech could have easily allowed the device to behave as a universal remote for all your electronic components.  You can use it to control a DVD or Blu Ray player via some customization of the remote, but that&#8217;s another article for another time.<br />
<a name="Single Input"><br />
<h4>Single Input</h4>
<p></a>It would also be nice if the Revue included multiple inputs, rather than just a single one.  When you switch to other inputs on your television (say your XBox 360, Wii, or DVD player), you lose Google TV because it&#8217;s running on a different input.  If the Revue had multiple inputs, you could continue to use dual view with other devices on the television.  Including multiple inputs along with more features as a universal remote to control all of those devices would make the Revue more attractive and make it the true centerpiece of your entertainment system.<br />
<a name="Sluggish Adobe Flash Performance"><br />
<h4>Sluggish Adobe Flash Performance</h4>
<p></a>YouTube works fine, and videos on most other websites typically play without issues.  However, on occasion you may encounter some websites with Adobe Flash that perform very poorly.  I wanted to try out the Nick Jr. website, because my daughter wanted to play some games, and the performance was horrendous.  I think that if you encounter websites that have more than one or two flash objects, you&#8217;ll see the performance of the browser degrade significantly.  I even encountered a website at one point that brought the Revue to a grinding halt.<br />
<a name="Google TV and Logitech Revue Summary"><br />
<h3>Google TV and Logitech Revue Summary</h3>
<p></a>All-in-all the Logitech Revue is a pretty cool gadget, but I don&#8217;t think I would rush out and spend $250 on it.  That being said, I do really enjoy the one I have and it has found a permanent home in my entertainment system.  It makes navigating my television programming much easier, makes it easy to stream video and music, and brings the web to my television.</p>
<p>If you want an easier way to access your television programming and stream videos to your television, then the <a href="http://bit.ly/gIki6Y">Logitech Revue with Google TV</a> may be right for you as long as you&#8217;re willing to pay $250.  If you have Netflix and you don&#8217;t already have a Netflix capable device, the Logitech Revue may be even more appealing to you.</p>

<!– google_ad_section_end –>
<p><a href="http://feedads.g.doubleclick.net/~a/bxiOrRVDZbgHCKMwZ4WBbcYpHUY/0/da"><img src="http://feedads.g.doubleclick.net/~a/bxiOrRVDZbgHCKMwZ4WBbcYpHUY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/bxiOrRVDZbgHCKMwZ4WBbcYpHUY/1/da"><img src="http://feedads.g.doubleclick.net/~a/bxiOrRVDZbgHCKMwZ4WBbcYpHUY/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=YO0-ra3u6iY:ZyivRcxiT1c:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=YO0-ra3u6iY:ZyivRcxiT1c:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=YO0-ra3u6iY:ZyivRcxiT1c:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=YO0-ra3u6iY:ZyivRcxiT1c:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=YO0-ra3u6iY:ZyivRcxiT1c:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=YO0-ra3u6iY:ZyivRcxiT1c:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=YO0-ra3u6iY:ZyivRcxiT1c:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=YO0-ra3u6iY:ZyivRcxiT1c: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/YO0-ra3u6iY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geeklad.com/review-on-logitech-revue-and-google-tv/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://geeklad.com/review-on-logitech-revue-and-google-tv</feedburner:origLink></item>
		<item>
		<title>Get the Best Price per Gigabyte with gb4less</title>
		<link>http://feeds.geeklad.com/~r/GeekLad/~3/cIzecNMOuJw/get-the-best-price-per-gigabyte-with-gb4less</link>
		<comments>http://geeklad.com/get-the-best-price-per-gigabyte-with-gb4less#comments</comments>
		<pubDate>Tue, 12 Oct 2010 22:20:17 +0000</pubDate>
		<dc:creator>GeekLad</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[hardware]]></category>

		<guid isPermaLink="false">http://geeklad.com/?p=2185</guid>
		<description><![CDATA[Some time ago, I was looking for some new storage on Newegg.com. I became a bit frustrated looking for the best deal. Although Newegg allows you to sort by rating, you cannot filter on rating data (rating and # of reviews). If you sort by price, you have to try to read through everything to [...]]]></description>
			<content:encoded><![CDATA[
<!– google_ad_section_start –>
<p><a title="best price per gigabyte" href="http://gb4less.com"><img class="size-full wp-image-2186 alignleft" style="border: 0px none;" title="best price per gigabyte" src="http://geeklad.com/wp-content/uploads/2010/10/gb4less-logo.png" alt="gb4less-logo" width="231" height="175" /></a>Some time ago, I was looking for some new storage on <a href="http://www.newegg.com">Newegg.com</a>.  I became a bit frustrated looking for the best deal.  Although Newegg allows you to sort by rating, you cannot filter on rating data (rating and # of reviews).  If you sort by price, you have to try to read through everything to figure out which products have the best ratings and have been rated a fair number of times.</p>
<p>Being the analytical person I am, I just simply wanted the most bang for my buck, but I wanted to make sure the product I bought was tried and true.  Eventually, I built <a href="http://gb4less.com">gb4less</a> to help others seeking to do the same (and of course, make a few bucks in the process).  With gb4less, you can sort by price and filter on rating info at the same time and do much more!</p>
<p><span id="more-2185"></span>Every hour, gb4less crawls Newegg for deals on <a href="http://gb4less.com/internal-hard-drives">internal hard drives</a>, <a href="http://gb4less.com/external-hard-drives">external hard drives</a>, <a href="http://gb4less.com/usb-flash-drives">USB flash drives</a>, <a href="http://gb4less.com/desktop-memory">system memory</a>, <a href="http://gb4less.com/memory-cards">memory cards</a>, and <a href="http://gb4less.com/ssd-solid-state-drives">SSD</a>.  It then calculates the price per gigabyte (including shipping) for all the products it finds, and then takes the top product for each category and displays them on the front page.  If you don&#8217;t like the particular brand of the product you see on the front page, you can view all products n the category and search for the best price per gigabyte for your favorite brand.</p>
<p>The good folks at MakeUseOf placed a <a href="http://www.makeuseof.com/dir/gb4less-hard-drive-cost-per-gb/">feature on gb4less</a> in the <a href="http://www.makeuseof.com/dir">MakeUseOf directory</a>.  Shortly after, the good folks at LifeHacker and <a href="http://gizmodo.com/5655939/gb4less-finds-the-lowest-per+gigabyte-storage-and-memory-deals">Gizmodo</a> also posted their own <a href="http://lifehacker.com/5655920/gb4less-finds-the-lowest-per+gigabyte-storage-and-memory-deals">feature on gb4less</a>.  It wasn&#8217;t long after that before <a href="http://secure.hostgator.com/~affiliat/cgi-bin/affiliates/clickthru.cgi?id=jsierra">HostGator</a> shut down gb4less, because all the traffic had brought down the entire server!</p>
<p>I was planning to eventually build a file cache to help the site to better handle traffic, but the bombardment from LifeHacker and Gizmodo expedited that plan.  Fortunately, Yii (an <a href="http://www.yiiframework.com/">excellent PHP framework</a> I used to build gb4less) had built-in cache support.  After a bit of research to implement the cache and a some hacking to re-enable the site, gb4less was back up and running.</p>
<p>So the next time you&#8217;re looking for some new storage, be sure to check out <a href="http://gb4less.com/">gb4less</a>!</p>

<!– google_ad_section_end –>
<p><a href="http://feedads.g.doubleclick.net/~a/FTBEVIKrJO7K5a-9Ai6heYgWUow/0/da"><img src="http://feedads.g.doubleclick.net/~a/FTBEVIKrJO7K5a-9Ai6heYgWUow/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/FTBEVIKrJO7K5a-9Ai6heYgWUow/1/da"><img src="http://feedads.g.doubleclick.net/~a/FTBEVIKrJO7K5a-9Ai6heYgWUow/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=cIzecNMOuJw:HWbeFwa0ZH4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=cIzecNMOuJw:HWbeFwa0ZH4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=cIzecNMOuJw:HWbeFwa0ZH4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=cIzecNMOuJw:HWbeFwa0ZH4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=cIzecNMOuJw:HWbeFwa0ZH4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=cIzecNMOuJw:HWbeFwa0ZH4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=cIzecNMOuJw:HWbeFwa0ZH4:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=cIzecNMOuJw:HWbeFwa0ZH4: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/cIzecNMOuJw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geeklad.com/get-the-best-price-per-gigabyte-with-gb4less/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://geeklad.com/get-the-best-price-per-gigabyte-with-gb4less</feedburner:origLink></item>
		<item>
		<title>3 Tips for Securing and Remembering Your Passwords</title>
		<link>http://feeds.geeklad.com/~r/GeekLad/~3/v-th31E84Yg/3-tips-for-securing-and-remembering-your-passwords</link>
		<comments>http://geeklad.com/3-tips-for-securing-and-remembering-your-passwords#comments</comments>
		<pubDate>Thu, 02 Sep 2010 23:02:02 +0000</pubDate>
		<dc:creator>GeekLad</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://geeklad.com/3-tips-for-securing-and-remembering-your-passwords</guid>
		<description><![CDATA[I recently had a few friends that had their email accounts hacked. I provided them with a few tips for creating unique, easy-to-remember, and secure passwords. Afterwards, I thought it would be a good idea to share those tips with the rest of you. Use an Easy to Remember Phrase Most passwords are hacked using [...]]]></description>
			<content:encoded><![CDATA[
<!– google_ad_section_start –>
<p><img class="alignleft" style="border: 0px none;" src="http://geeklad.com/wp-content/uploads/2010/09/padlock-with-keys.jpg" alt="padlock-with-keys.jpg" width="145" height="150" /> I recently had a few friends that had their email accounts hacked. I provided them with a few tips for creating unique, easy-to-remember, and secure passwords. Afterwards, I thought it would be a good idea to share those tips with the rest of you.</p>
<p><span id="more-2181"></span></p>
<h3>Use an Easy to Remember Phrase</h3>
<p>Most passwords are hacked using simple dictionary attacks. This is why many systems require you to use symbols, mix of capital and lowercase letters, numbers, etc. It helps to prevent your password from falling victim to a simple dictionary attack.</p>
<p>Another (and I think better) way to avoid using words, but maintaining the ease of remembering words, is to use the first letter of every word in a phrase. For example, <em>jbnjbqjjotcs</em> might make a good password. How could you possibly remember such a cryptic password? Easy: <strong>J</strong>ack <strong>B</strong>e <strong>N</strong>imble <strong>J</strong>ack <strong>B</strong>e <strong>Q</strong>uick <strong>J</strong>ack <strong>J</strong>ump <strong>O</strong>ver <strong>T</strong>he <strong>C</strong>andle <strong>S</strong>tick.</p>
<h3>Create Unique Passwords</h3>
<p>You also never want to use the same password for multiple systems. You should always try to create a (relatively) unique password for each site you log into. But doesn&#8217;t this go against making passwords easy to remember?</p>
<p>Well, you could try unique phrases for each website you log into, but that&#8217;s not much better than using different words for different sites and forgetting which ones you used where. Here&#8217;s a tip for creating unique passwords for different systems, but still being able to remember your passwords: Use the same phrase, but prepend or append it with the first letter or an abbreviation of the site you&#8217;re logging into.</p>
<p>Continuing with our nursery rhyme example, you could use jbnjbqjjotcs<strong>fb</strong> as your Facebook password, jbnjbqjjotcs<strong>gm</strong> as your Gmail password, and jbnjbqjjotcs<strong>t</strong> as your Twitter password.</p>
<h3>Use Capitals, Symbols and Numbers</h3>
<p>You don&#8217;t have use capitals, punctuation, and numbers all at the same time, although it certainly doesn&#8217;t hurt to do so and some systems even require it. You just have to be sure that whatever combination you use, that you&#8217;ll remember it.</p>
<p>With our nursery rhyme password, for our Facebook account, we might try something like: <strong>Jbn,Jbq,JjotcsFb13</strong></p>
<p>The end of each line in the nursery rhyme provides a logical place to put a comma. Being pronouns, Jack and Facebook are logical to capitalize. Finally, we added the 13 to the end, because that&#8217;s your lucky number. Use easy to remember symbols and punctuation in logical positions within your phrase, to make it easy to remember.</p>

<!– google_ad_section_end –>
<p><a href="http://feedads.g.doubleclick.net/~a/J6X_bc-psgAK-TMOxnXtnsB5w5Q/0/da"><img src="http://feedads.g.doubleclick.net/~a/J6X_bc-psgAK-TMOxnXtnsB5w5Q/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/J6X_bc-psgAK-TMOxnXtnsB5w5Q/1/da"><img src="http://feedads.g.doubleclick.net/~a/J6X_bc-psgAK-TMOxnXtnsB5w5Q/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=v-th31E84Yg:cCBKWEwNg2A: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-th31E84Yg:cCBKWEwNg2A:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=v-th31E84Yg:cCBKWEwNg2A:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=v-th31E84Yg:cCBKWEwNg2A:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=v-th31E84Yg:cCBKWEwNg2A:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=v-th31E84Yg:cCBKWEwNg2A:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=v-th31E84Yg:cCBKWEwNg2A:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=v-th31E84Yg:cCBKWEwNg2A: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-th31E84Yg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geeklad.com/3-tips-for-securing-and-remembering-your-passwords/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://geeklad.com/3-tips-for-securing-and-remembering-your-passwords</feedburner:origLink></item>
		<item>
		<title>Google Caffeine and SEO – Optimizing for Real-Time Search</title>
		<link>http://feeds.geeklad.com/~r/GeekLad/~3/EAxFjBaHvMY/google-caffeine-and-seo-optimizing-for-real-time-search</link>
		<comments>http://geeklad.com/google-caffeine-and-seo-optimizing-for-real-time-search#comments</comments>
		<pubDate>Wed, 09 Jun 2010 05:42:24 +0000</pubDate>
		<dc:creator>GeekLad</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Search Engine Optimization]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://geeklad.com/?p=2154</guid>
		<description><![CDATA[So what is Google Caffeine all about? A simple analogy: Google Caffeine is to search what the iPhone 4 is to the iPhone; a modern update to an existing product. It still continues to provide all of the great features that made it great and whets the appetite for technology with a few clever new [...]]]></description>
			<content:encoded><![CDATA[
<!– google_ad_section_start –>
<p><img src="http://geeklad.com/wp-content/uploads/2010/06/caffeine.jpg" alt="caffeine" title="caffeine" width="160" height="120" class="alignleft size-full wp-image-2155" style="border: 0 none;"/>So what is <a href="http://googleblog.blogspot.com/2010/06/our-new-search-index-caffeine.html">Google Caffeine</a> all about?  A simple analogy: Google Caffeine is to search what the iPhone 4 is to the iPhone; a modern update to an existing product.  It still continues to provide all of the great features that made it great and whets the appetite for technology with a few clever new features &#8212; neither product provides any new revolutionary functionality, just some upgrades.</p>
<p><span id="more-2154"></span>Without a doubt, Google revolutionized search engine technology and Apple did the same with smartphones.  However, when it comes down to fundamentals, Google Caffeine is no more revolutionary than the iPhone 4.  The new iPhone is slimmer, faster, prettier, but it&#8217;s not as groundbreaking as its predecessors.  The same goes for Google Caffeine: faster more recent results, but again, not groundbreaking &#8212; it still provides relevant results and information being sought.</p>
<p>I&#8217;m more interested into probing into what Google Caffeine will mean for SEO.  Initially, there will likely be some manipulation taking place.  There will quickly emerge a new generation of &#8220;real-time SEO experts&#8221; that will know how to take advantage of the new technology, as they will poke and prod until they spring a leak and the waterfall of desired results comes pouring out.  There will be a short window of opportunity where these &#8220;SEO experts&#8221; will charge a fortune for what will eventually turn into marginal results.</p>
<p>Fundamentally speaking however, Google Caffeine is not revolutionary.  It does exactly what Google search has always done: providing the most relevant results; it&#8217;s just happening faster.  It could eventually result in what has happened in mainstream media &#8212; who can provide the latest and greatest breaking news with the best delivery (hopefully minus the sensationalism).</p>
<p>No longer will it just be about bringing the most relevant content, but you will need to provide the most relevant content in the shortest amount of time.  So not only will you need to provide the most pertinent information for those seeing it, you will need to do so as quickly as possible.  For well-established topics and information it will not be as important, but if you are on the bleeding edge of technology it will be paramount.</p>
<p>For the big guys (<a href="http://techcrunch.com/">TechCrunch</a>, <a href="http://www.gizmodo.com">Gizmodo</a>, <a href="http://www.slashdot.org">Slashdot</a>, etc.) it probably doesn&#8217;t mean a whole lot.  They already have the infrastructure and resources to provide breaking news quickly and effectively.  However, for the little guys, it may provide a window of opportunity to speak their minds and acquire the audiences they are seeking.</p>
<p>So if you&#8217;re interested in taking advantage of Google Caffeine, how might you go about it?</p>
<ol>
<li>Keep your ear to the ground</li>
<p>Stay connected and read what folks are talking about.  Write about what people are reading about.  However, in order to be heard you need to&#8230;</p>
<li>Develop your own opinion</li>
<p>Probably the worst thing you can do is repeat what others are saying, as your voice will be lost in the noise.  Do something crazy like compare Google Search to the new iPhone and perhaps piss off a few people in the process.  Nothing drives more traffic to a website than anger and controversy.</p>
<li>Express your opinion</li>
<p>&#8230;express it quickly, and express it well.  If you can gather your thoughts quickly and provide an intelligent editorial on breaking news, you&#8217;re likely to get noticed.  </p>
<li>Apply all the same old rules such as&#8230;</li>
<ul>
<li>Relevant content</li>
<li>Well-written content</li>
<li>Original content (expressing your own unique opinion will take care of this)</li>
<li>Inbound links (relevant, well-written, original content will eventually generate inbound links and take care of this as well)</li>
</ul>
<li>Get involved</li>
<p>Whatever interests you online, get involved in some online forums.  If you have an area of expertise, join forums in your field, hyperlink your signature file to your website, and start posting questions and answers.  If you have relevant articles on your website to the topic at hand, hyperlink to them.  The majority of forums allow you to create hyperlinks that provide coveted linkjuice back to your website.</p>
<p>Do not haphazardly begin joining any and every forum in your field and start posting garbage.  You will quickly get banned and disrespected and will achieve the opposite of what you wish to accomplish.  Go in with the genuine intention of providing useful information to those seeking it (the very same intention you should have with your website), and ask thoughtful and provoking questions that will solicit helpful answers.  You will quickly garner the respect you deserve.
</ol>
<p>Ultimately, if you&#8217;re already providing relevant content on breaking news that others are interested to read about and you provide your readers with a unique perspective, you should be in pretty good shape to take advantage of Google Caffeine.  It could mean a few late nights or early mornings to be the first one to break some big news, so you may wish to invest in a good coffee machine and a nice big mug.  And with that&#8230; it&#8217;s time for bed.  It&#8217;s past 1:30am here. <img src='http://geeklad.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>

<!– google_ad_section_end –>
<p><a href="http://feedads.g.doubleclick.net/~a/z6YmjGDn04_4BZOGkfOnyBgiwzA/0/da"><img src="http://feedads.g.doubleclick.net/~a/z6YmjGDn04_4BZOGkfOnyBgiwzA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/z6YmjGDn04_4BZOGkfOnyBgiwzA/1/da"><img src="http://feedads.g.doubleclick.net/~a/z6YmjGDn04_4BZOGkfOnyBgiwzA/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=EAxFjBaHvMY:lOoR6kxero8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=EAxFjBaHvMY:lOoR6kxero8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=EAxFjBaHvMY:lOoR6kxero8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=EAxFjBaHvMY:lOoR6kxero8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=EAxFjBaHvMY:lOoR6kxero8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=EAxFjBaHvMY:lOoR6kxero8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=EAxFjBaHvMY:lOoR6kxero8:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=EAxFjBaHvMY:lOoR6kxero8: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/EAxFjBaHvMY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geeklad.com/google-caffeine-and-seo-optimizing-for-real-time-search/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://geeklad.com/google-caffeine-and-seo-optimizing-for-real-time-search</feedburner:origLink></item>
		<item>
		<title>Keyword Tool Supercharger</title>
		<link>http://feeds.geeklad.com/~r/GeekLad/~3/naqVeGJ1Obs/keyword-tool-supercharger</link>
		<comments>http://geeklad.com/keyword-tool-supercharger#comments</comments>
		<pubDate>Mon, 01 Feb 2010 11:11:50 +0000</pubDate>
		<dc:creator>GeekLad</dc:creator>
				<category><![CDATA[Search Engine Optimization]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[google adwords]]></category>
		<category><![CDATA[Google Chrome]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://geeklad.com/?p=2106</guid>
		<description><![CDATA[The Google AdWords Keyword Tool is a great tool to help you identify popular keywords that can help with search engine optimization. However, it really only supplies insight into one component of the equation when it comes to driving traffic to your site: keyword demand. It lacks any information about what sort of supply there [...]]]></description>
			<content:encoded><![CDATA[
<!– google_ad_section_start –>
<p><img src="http://geeklad.com/wp-content/uploads/2010/01/search.png" alt="search" title="search" width="128" height="128" class="alignleft size-full wp-image-2107" style="border: 0 none;" />The <a href="https://adwords.google.com/select/KeywordToolExternal?forceLegacy=true">Google AdWords Keyword Tool</a> is a great tool to help you identify popular keywords that can help with search engine optimization.  However, it really only supplies insight into one component of the equation when it comes to driving traffic to your site: keyword demand.  It lacks any information about what sort of supply there is fulfilling that demand.  To help fill that void, I&#8217;ve developed the Keyword Tool Supercharger.</p>
<p><span id="more-2106"></span><br />
<h3><a name="supply-demand" alt="Supply and Demand" title="Supply and Demand"></a>Supply and Demand</h3>
<p><img src="http://geeklad.com/wp-content/uploads/2010/01/supply-demand.png" alt="supply-demand" title="supply-demand" width="128" height="128" class="alignright size-full wp-image-2126" style="border: 0 none;" /><br />
Fundamentally speaking, organic traffic from search engines comes as a result of two components: demand for certain keywords (people searching for things) and supply of information (webpage providing content that matches those keywords).  Of course, it&#8217;s not entirely that simple, but at a very high-level that&#8217;s how it works.  The AdWords Keyword Tool does help to inform you keywords people are looking for, but it says nothing of how many webpages there are providing information on those keywords.  That&#8217;s where my Keyword Tool Supercharger can help.<br />
<strong>Image Credit</strong>: <a href="http://commons.wikimedia.org/wiki/File:Supply-demand-equilibrium.svg">SilverStar</a></em></p>
<h3><a name="how-it-works" alt="How the Keyword Tool Supercharger Works" title="How Keyword Tool Supercharger Works"></a>How the Keyword Tool Supercharger Works</h3>
<p><img src="http://geeklad.com/wp-content/uploads/2010/01/gear.png" alt="gear" title="gear" width="128" height="128" class="alignleft size-full wp-image-2131" style="border: 0 none;" /><br />
To find the competition data, my tool takes advantage of the Bing API to bring in preliminary numbers for the competition data.  It performs exact searches (by default) on each keyword.  It will output the number of search results for each keyword according to Bing.  It also breaks down monthly searches by average daily search, and then builds a supply/demand ratio based on the daily searches divided by the total number of results for the keyword.</p>
<p>The Bing data is far from perfect, but it at least provides a good first guess.  To provide a better estimate, you will notice that the competition data is hyperlinked.  Clicking on the hyperlink will then bring in the estimated number of search results for that keyword on Google.  This should give a much better figure for the competition data and supply/demand ratio.  The lower the ratio, the better the odds you&#8217;ll receive some organic traffic if you use those keywords on your page.  The additional keyword analysis data is provided in three new columns in the display.<br />
<em><strong>Image Credit</strong>: <a href="http://commons.wikimedia.org/wiki/File:Gear_1.svg">eugrafia</a></em></p>
<p><img src="http://geeklad.com/wp-content/uploads/2010/01/additional-keywords-ranking-analysis.png" alt="Keywords Ranking Analysis" title="additional-keywords-ranking-analysis" width="418" height="257" class="alignnone size-full wp-image-2110" style="border: 0 none;" /></p>
<h3><a name="the-options" alt="The Options" title="The Options"></a>The Options</h3>
<p><img src="http://geeklad.com/wp-content/uploads/2010/01/choices.png" alt="choices" title="choices" width="128" height="121" class="alignright size-full wp-image-2139" style="border: 0 none;" /><br />
In addition to the new columns in the display, there are also new fields and buttons on the submission form.  Here is a description of each of the new options:</p>
<ul>
<li><strong>Desired Daily Volume</strong>: The number of daily searches for the keywords.  Higher is better.</li>
<li><strong>Desired Competition</strong>: The number of websites containing the keywords.  Lower is better.</li>
<li><strong>Desired Supply/Demand Ratio</strong>: The # of competing sites/# of daily searches.  Lower is better, a ratio less than 1 is ideal.</li>
<li><strong>Required words (comma or space separated)</strong>: Words/phrases you wish to see appear within the results.  These need to be separated by commas.  You can also prefix a word/phrase with a minus (-) to specify words you do not want to appear in the results.</li>
<li><strong>Exact search</strong>: Whether or not you want the competition data to be based on searches of the exact phrase (the keyword phrases are seached with quotes).  By default, this is enabled.</li>
<li><strong>Filter on SEO Criteria</strong>: When you click this, only rows that match the criteria above will be displayed.</li>
<li><strong>Show All/Update Display</strong>: This will display all results (including those that do not match the criteria above).</li>
<li><strong>Reload Competition Data</strong>: This will reset and reload all of the competition data.  This may be necessary if you&#8217;ve selected a new choice for the <em>Exact search</em> option.</li>
<li><strong>Get keyword ideas</strong>: Loads in the keyword data</li>
</ul>
<p><em><strong>Image Credit</strong>: <a href="http://commons.wikimedia.org/wiki/File:Split.svg">Xander</a></em></p>
<p><img src="http://geeklad.com/wp-content/uploads/2010/01/keyword-tool-options.png" alt="keyword-tool-options" title="Keyword Tool Options" width="685" height="375" class="alignnone size-full wp-image-2112" style="border: 0 none;" /></p>
<h3><a name="how-to-use-it" alt="How to Use It" title="How to Use It"></a>How to Use It</h3>
<p><img src="http://geeklad.com/wp-content/uploads/2010/01/tools.png" alt="tools" title="tools" width="150" height="150" class="alignleft size-full wp-image-2144" style="border: 0 none;" /><br />
To take advantage of the information provided by the tool, you should seek out keywords that are high in demand and low in supply (those with a low Supply/Demand ratio).  You also want to be sure there is sufficient demand to drive traffic to your site.  Once you&#8217;ve identified keywords that meet this criteria, sprinkle them throughout your site and use them in page titles and headings as well.  There are two ways you can use my free keyword tool supercharger.<br />
<em><strong>Image Credit</strong>: <a href="http://commons.wikimedia.org/wiki/File:Icon_tools.png">STyx</a></em></p>
<p><a name="chrome-extension" alt="Chrome Extension" title="Chrome Extension"></a><br />
<h4>Chrome Extension</h4>
<p>The easier way, is to install the <a href="http://www.google.com/chrome">Google Chrome</a> extension.  Simply click the link below to install it, and then visit the <a href="https://adwords.google.com/select/KeywordToolExternal?forceLegacy=true">AdWords Keyword Tool</a> page.</p>
<p style="text-align: center;"><a style="border: 1px solid #888888; padding: 4px 8px; font-weight: bold;" href="http://geeklad.com/tools/keyword_tool_supercharger.crx">Keyword Tool Supercharger Chrome Extension</a></p>
<p><a name="bookmarklet" alt="Bookmarklet" title="Bookmarklet"></a><br />
<h4>Bookmarklet</h4>
<p>If you don&#8217;t have Google Chrome, I still have a solution for you.  Drag the bookmarklet below to your browser&#8217;s bookmarks bar.</p>
<p><p style="text-align: center;"><a style="border: 1px solid #888888; padding: 4px 8px; font-weight: bold;" href="javascript:void((function(){newscript=document.createElement('script');newscript.src='http://geeklad.com/tools/keyword_tool_supercharger.js';document.body.appendChild(newscript);})());">KWT Supercharger</a></p></p>
<p>When you visit the <a href="https://adwords.google.com/select/KeywordToolExternal?forceLegacy=true">AdWords Keyword Tool</a> page, click the bookmarklet.  This will load in the JavaScript file that performs the manipulations on the page to display the additional keyword analysis.  It should work in Internet Explorer and Firefox.  Your mileage may vary with other browsers.</p>

<!– google_ad_section_end –>
<p><a href="http://feedads.g.doubleclick.net/~a/clu16WNNx43SoX_8F1xnVycUWgk/0/da"><img src="http://feedads.g.doubleclick.net/~a/clu16WNNx43SoX_8F1xnVycUWgk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/clu16WNNx43SoX_8F1xnVycUWgk/1/da"><img src="http://feedads.g.doubleclick.net/~a/clu16WNNx43SoX_8F1xnVycUWgk/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=naqVeGJ1Obs:rsC04pKF2Ak:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=naqVeGJ1Obs:rsC04pKF2Ak:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=naqVeGJ1Obs:rsC04pKF2Ak:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=naqVeGJ1Obs:rsC04pKF2Ak:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=naqVeGJ1Obs:rsC04pKF2Ak:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=naqVeGJ1Obs:rsC04pKF2Ak:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=naqVeGJ1Obs:rsC04pKF2Ak:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=naqVeGJ1Obs:rsC04pKF2Ak: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/naqVeGJ1Obs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geeklad.com/keyword-tool-supercharger/feed</wfw:commentRss>
		<slash:comments>31</slash:comments>
		<feedburner:origLink>http://geeklad.com/keyword-tool-supercharger</feedburner:origLink></item>
		<item>
		<title>goo.gl URL Shortener Bookmarklet via YQL</title>
		<link>http://feeds.geeklad.com/~r/GeekLad/~3/8e78EKN2xdY/goo-gl-url-shortener-bookmarklet-via-yql</link>
		<comments>http://geeklad.com/goo-gl-url-shortener-bookmarklet-via-yql#comments</comments>
		<pubDate>Sat, 16 Jan 2010 15:40:54 +0000</pubDate>
		<dc:creator>GeekLad</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[goo.gl]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[YQL]]></category>

		<guid isPermaLink="false">http://geeklad.com/?p=2087</guid>
		<description><![CDATA[Last month we saw a new Google URL shortening service that will be used for Feedburner and the Google Toolbar. It wasn&#8217;t long before the URL shortening code in the toolbar was dissected, and subsequent APIs developed. I managed to put together my own by using YQL. YQL is a truly amazing web API.  With [...]]]></description>
			<content:encoded><![CDATA[
<!– google_ad_section_start –>
<p><img class="alignleft size-full wp-image-2088" title="goo.gl_yql" src="http://geeklad.com/wp-content/uploads/2010/01/goo.gl_yql.png" alt="goo.gl_yql" width="247" height="243" style="border: 0 none;" />Last month we saw a new <a href="http://googleblog.blogspot.com/2009/12/making-urls-shorter-for-google-toolbar.html">Google URL shortening service</a> that will be used for Feedburner and the Google Toolbar.  It wasn&#8217;t long before the <a href="http://www.kix.in/blog/2009/12/goo-gl/">URL shortening code in the toolbar was dissected</a>, and subsequent APIs developed.  I managed to put together my own by using <a href="http://developer.yahoo.com/yql/">YQL</a>.</p>
<p><span id="more-2087"></span>YQL is a truly amazing web API.  With its <a href="http://developer.yahoo.com/yql/guide/yql-execute-chapter.html">server-side JavaScript</a> and the ability to quickly scour the web for information, there is very little it cannot do.  I decided it was the perfect platform for putting together a simple API for goo.gl.</p>
<p>Because the Google Toolbar was already written in JavaScript, implementing it in YQL was quite easy with the server-side JavaScript.  It wasn&#8217;t long, before I put together my own <a href="http://www.datatables.org/">open data table</a> for <a href="http://goo.gl">goo.gl</a>.</p>
<p>I submitted my open table to the <a href="http://github.com/yql/yql-tables">git repository for open data tables</a>, and shortly after my <a href="http://github.com/yql/yql-tables/blob/master/google/google.goo.gl.xml">goo.gl open data table</a> was included.  It&#8217;s really pretty simple.  The YQL you would use to get the short URL for my blog would be:</p>
<p><code>SELECT * FROM google.goo.gl WHERE url="http://geeklad.com"</code></p>
<p>The great thing about YQL is that you can obtain the data as XML or JSON, and specify a JSON callback function.  So that means it&#8217;s very easy to use in JavaScript and develop <a href="http://geeklad.com/make-cross-domain-ajax-requests-with-xdrequest">cross-domain JavaScript</a>.  I put together a simple bookmarklet that uses my public YQL table and provides a goo.gl URL for the current page.  To try it out, just drag and drop the link below to your browser&#8217;s shortcut bar:</p>
<p><p style="text-align: center;"><a style="border: 1px solid #888888; padding: 4px 8px; font-weight: bold;" href="javascript:var YQL_url='https://query.yahooapis.com/v1/public/yql?format=json&env=store://datatables.org/alltableswithkeys&q=';var YQL_statement='SELECT * FROM google.goo.gl WHERE url=\''+document.location.href+'\'';var YQL_script_url=YQL_url+encodeURIComponent(YQL_statement)+'&callback=yql_cb';function yql_cb(response){short_url=response.query.results.result;prompt('Here is your short URL:  (be sure to copy to your clipboard)', short_url);}var yql_script=document.createElement('script');yql_script.src=YQL_script_url;document.getElementsByTagName('head')[0].appendChild(yql_script);void(0);">goo.gl page</a></p></p>
<p>Here&#8217;s the JavaScript code from the bookmarklet:<br />

<pre><code>var YQL_url='https://query.yahooapis.com/v1/public/yql?format=json&env=store://datatables.org/alltableswithkeys&q=';
var YQL_statement='SELECT * FROM google.goo.gl WHERE url=\''+document.location.href+'\'';
var YQL_script_url=YQL_url+encodeURIComponent(YQL_statement)+'&callback=yql_cb';
function yql_cb(response){
	short_url=response.query.results.result;
	prompt('Here is your short URL (be sure to copy to your clipboard): ', short_url);
}
var yql_script=document.createElement('script');
yql_script.src=YQL_script_url;
document.getElementsByTagName('head')[0].appendChild(yql_script);</code></pre>
</p>
<p>Pretty simple.  Basically it works by putting together the YQL statement w/ the URL of the current page, builds the proper YQL API URL for it, and finally inserts a JavaScript script with the call to the callback function that displays the URL of the current page in a prompt.  You&#8217;ll have to manually copy it to your clipboard.  Enjoy!</p>

<!– google_ad_section_end –>
<p><a href="http://feedads.g.doubleclick.net/~a/Pr1QYxL0MRbhZl9eIFFmeLgTi2A/0/da"><img src="http://feedads.g.doubleclick.net/~a/Pr1QYxL0MRbhZl9eIFFmeLgTi2A/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Pr1QYxL0MRbhZl9eIFFmeLgTi2A/1/da"><img src="http://feedads.g.doubleclick.net/~a/Pr1QYxL0MRbhZl9eIFFmeLgTi2A/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=8e78EKN2xdY:sub1VbyXEbc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=8e78EKN2xdY:sub1VbyXEbc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=8e78EKN2xdY:sub1VbyXEbc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=8e78EKN2xdY:sub1VbyXEbc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=8e78EKN2xdY:sub1VbyXEbc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=8e78EKN2xdY:sub1VbyXEbc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=8e78EKN2xdY:sub1VbyXEbc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=8e78EKN2xdY:sub1VbyXEbc: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/8e78EKN2xdY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geeklad.com/goo-gl-url-shortener-bookmarklet-via-yql/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://geeklad.com/goo-gl-url-shortener-bookmarklet-via-yql</feedburner:origLink></item>
		<item>
		<title>Yahoo! Finance Excerpt FAIL</title>
		<link>http://feeds.geeklad.com/~r/GeekLad/~3/Q_j7fCdKbIM/yahoo-finance-excerpt-fail</link>
		<comments>http://geeklad.com/yahoo-finance-excerpt-fail#comments</comments>
		<pubDate>Tue, 22 Dec 2009 18:37:16 +0000</pubDate>
		<dc:creator>GeekLad</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://geeklad.com/?p=2081</guid>
		<description><![CDATA[I found this excerpt from Yahoo! Finance particularly amusing. Apparently, Obama wants local lenders to help businesses seize.]]></description>
			<content:encoded><![CDATA[
<!– google_ad_section_start –>
<p><a rel="lightbox" href="http://geeklad.com/wp-content/uploads/2009/12/yahoo-finance-fail.png"><img class="alignnone size-full wp-image-2082" style="border: 0 none;" title="yahoo-finance-fail" src="http://geeklad.com/wp-content/uploads/2009/12/yahoo-finance-fail.png" alt="yahoo-finance-fail" width="500" /></a></p>
<p>I found this excerpt from Yahoo! Finance particularly amusing.  Apparently, Obama wants local lenders to help businesses seize.</p>

<!– google_ad_section_end –>
<p><a href="http://feedads.g.doubleclick.net/~a/ATazZwD5GlnJchh-8hm9Zaulr6s/0/da"><img src="http://feedads.g.doubleclick.net/~a/ATazZwD5GlnJchh-8hm9Zaulr6s/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ATazZwD5GlnJchh-8hm9Zaulr6s/1/da"><img src="http://feedads.g.doubleclick.net/~a/ATazZwD5GlnJchh-8hm9Zaulr6s/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=Q_j7fCdKbIM:sZOryd2YH8Q:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=Q_j7fCdKbIM:sZOryd2YH8Q:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=Q_j7fCdKbIM:sZOryd2YH8Q:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=Q_j7fCdKbIM:sZOryd2YH8Q:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=Q_j7fCdKbIM:sZOryd2YH8Q:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=Q_j7fCdKbIM:sZOryd2YH8Q:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=Q_j7fCdKbIM:sZOryd2YH8Q:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=Q_j7fCdKbIM:sZOryd2YH8Q: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/Q_j7fCdKbIM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geeklad.com/yahoo-finance-excerpt-fail/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://geeklad.com/yahoo-finance-excerpt-fail</feedburner:origLink></item>
		<item>
		<title>Google Fusion Tables Could be a Game Changer</title>
		<link>http://feeds.geeklad.com/~r/GeekLad/~3/HOEdic1NkN8/google-fusion-tables-could-be-a-game-changer</link>
		<comments>http://geeklad.com/google-fusion-tables-could-be-a-game-changer#comments</comments>
		<pubDate>Tue, 15 Dec 2009 23:56:16 +0000</pubDate>
		<dc:creator>GeekLad</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Chrome]]></category>
		<category><![CDATA[Google Fusion Tables]]></category>

		<guid isPermaLink="false">http://geeklad.com/?p=2028</guid>
		<description><![CDATA[Google has been very busy lately with many new products recently. Many of them, such as Google Public DNS, Google Chrome OS, and real-time search have received the lion&#8217;s share of publicity. I&#8217;d like to talk about a little jewel sitting in Google Labs you may not heard of. It&#8217;s a shiny little jewel that [...]]]></description>
			<content:encoded><![CDATA[
<!– google_ad_section_start –>
<p><img src="http://geeklad.com/wp-content/uploads/2009/12/fusiontables_logo.png" alt="fusiontables_logo" title="fusiontables_logo" width="251" height="43" class="alignleft size-full wp-image-2029" style="border: 0 none;" /> Google has been very busy lately with many new products recently.  Many of them, such as <a href="http://googleblog.blogspot.com/2009/12/introducing-google-public-dns.html">Google Public DNS</a>, <a href="http://googleblog.blogspot.com/2009/11/releasing-chromium-os-open-source.html">Google Chrome OS</a>, and <a href="http://googleblog.blogspot.com/2009/12/relevance-meets-real-time-web.html">real-time search</a> have received the lion&#8217;s share of publicity.  I&#8217;d like to talk about a little jewel sitting in <a href="http://www.googlelabs.com">Google Labs</a> you may not heard of.   It&#8217;s a shiny little jewel that could become a real game changer and not many people are talking about it yet: <a href="http://tables.googlelabs.com">Google Fusion Tables</a>.</p>
<p><span id="more-2028"></span>Google Fusion Tables is a web application that allows you to import, manipulate, and generate reports from large data sets.  It is designed to handle much more data than you can put into <a href="http://docs.google.com/support/bin/topic.py?hl=en&#038;topic=15115">Google Spreadsheets</a> or versions of Excel earlier than Excel 2007.  Some time ago, I started fooling around with it and I managed to import a relatively large data set with nearly 150,000 records without any issues whatsoever.  The interface also provides some nice ways to visualize the data.</p>
<p><img src="http://geeklad.com/wp-content/uploads/2009/12/fusiontables_visualizations.png" alt="fusiontables_visualizations" title="fusiontables_visualizations" width="240" height="275" class="alignnone size-full wp-image-2034" style="border: 0 none;"/></p>
<p>In addition to providing some nifty visualizations, there are also many data tables that have been published for public use.  For example, the 2010 Quality of Life Index:</p>
<p><img src="http://geeklad.com/wp-content/uploads/2009/12/fusiontables_screenshot.png" alt="fusiontables_screenshot" title="fusiontables_screenshot" width="500" height="240" class="alignnone size-full wp-image-2033" style="border: 0 none;" /></p>
<p>So why do I think this could be a game changer?  Yesterday, the Google Code Blog <a href="http://googlecode.blogspot.com/2009/12/google-fusion-tables-api.html">announced the Fusion Tables API</a>.  With the API it is no longer necessary to use the Fusion Tables web interface to upload, manipulate, and visualize data.  Now it can be done programatically, and Fusion Tables can be used to store large data sets in the cloud.  The data can be extracted using <a href="http://en.wikipedia.org/wiki/SQL">SQL</a>, which is the gold standard for handling the data stored within databases.</p>
<p>Not long ago, <a href="http://staynalive.com/">Jesse Stay</a> wrote about <a href="http://staynalive.com/articles/2009/10/15/web-3-0-the-building-block-web/">the building block web</a>.  The Fusion Tables API is a perfect example of a new set of blocks that will integrate very well (and easily) with the building block web.  Persistent data storage is an essential component for the building block web, and that is just what Fusion Tables provides.</p>
<p>Of course, it doesn&#8217;t come without its limitations.  According to the <a href="http://code.google.com/apis/fusiontables/docs/developers_guide.html">Google Fusion Tables API developer&#8217;s guide</a>, the API can send a maximum of 5 requests per second to the Fusion Tables server.  Hopefully Google will lift that constraint or increase it at some point.  5 requests per second won&#8217;t be enough for the enterprise applications that could potentially be built on top of Fusion Tables.</p>
<p>If you&#8217;re a PHP programmer, here&#8217;s some PHP code I&#8217;ve put together to help get you started:</p>
<link href="http://geeklad.com/syntax-highlighter/style.css" rel="stylesheet" type="text/css"/>
<script src="http://geeklad.com/syntax-highlighter/script.js" type="text/javascript"></script></p>
<p>
<script  type="syntaxhighlighter" class="brush: php"><![CDATA[
function GoogleClientLogin($username, $password, $service) {
	// Check that we have all the parameters
	if(!$username || !$password || !$service) {
		throw new Exception("You must provide a username, password, and service when creating a new GoogleClientLogin.");
	}
	
	// Set up the post body
	$body = "accountType=GOOGLE &Email=$username&Passwd=$password&service=$service";
	
	// Set up the cURL
	$c = curl_init ("https://www.google.com/accounts/ClientLogin");
	curl_setopt($c, CURLOPT_POST, true);
	curl_setopt($c, CURLOPT_POSTFIELDS, $body);
	curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
	$response = curl_exec($c);
	
	// Parse the response to obtain just the Auth token
	// Basically, we remove everything before the "Auth="
	return preg_replace("/[\s\S]*Auth=/", "", $response);
}

class FusionTable {
	var $token;
	
	function FusionTable($token) {
		if (!$token) {
			throw new Exception("You must provide a token when creating a new FusionTable.");		
		}
		$this->token = $token;
	}
	
	function query($query) {
		if(!$query) {
			throw new Exception("query method requires a query.");
		}
		// Check to see if we have a query that will retrieve data
		if(preg_match("/^select|^show tables|^describe/i", $query)) {
			$request_url = "http://tables.googlelabs.com/api/query?sql=" . urlencode($query);
			$c = curl_init ($request_url);
			curl_setopt($c, CURLOPT_HTTPHEADER, array("Authorization: GoogleLogin auth=" . $this->token));
			curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
			
			// Place the lines of the output into an array
			$results = preg_split("/\n/", curl_exec ($c));
			
			// If we got an error, raise it
			if(curl_getinfo($c, CURLINFO_HTTP_CODE) != 200) {
				return $this->output_error($results);
			}

			// Drop the last (empty) array value
			array_pop($results);
			
			// Parse the output
			return $this->parse_output($results);
		}
		// Otherwise we are going to be updating the table, so we need to the POST method
		else if(preg_match("/^update|^delete|^insert/i", $query)) {
			// Set up the cURL
			$body = "sql=" . urlencode($query);
			$c = curl_init ("http://tables.googlelabs.com/api/query");
			curl_setopt($c, CURLOPT_POST, true);
			curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
			curl_setopt($c, CURLOPT_HTTPHEADER, array(
				"Content-length: " . strlen($body),
				"Content-type: application/x-www-form-urlencoded",
				"Authorization: GoogleLogin auth=" . $this->token . " "		// I don't know why, but unless I add extra characters after the token, I get this error: Syntax error near line 1:1: unexpected token: null
			));
			curl_setopt($c, CURLOPT_POSTFIELDS, $body);
			
			// Place the lines of the output into an array
			$results = preg_split("/\n/", curl_exec ($c));
			
			// If we got an error, raise it
			if(curl_getinfo($c, CURLINFO_HTTP_CODE) != 200) {
				return $this->output_error($results);
			}

			// Drop the last (empty) array value
			array_pop($results);
			
			return $this->parse_output($results);
		}
		else {
			throw new Exception("Unknown SQL query submitted.");
		}
	}
	
	private function parse_output($results) {
		$headers = false;
		$output = array();
		foreach($results as $row) {
			// Get the headers
			if(!$headers) {
				$headers = $this->parse_row($row);
			}
			else {
				// Create a new row for the array
				$newrow = array();
				$values = $this->parse_row($row);
				
				// Build an associative array, using the headers for the association
				foreach($headers as $index => $header) {
					$newrow[$header] = $values[$index];
				}
				
				// Add the new array to the output array
				array_push($output, $newrow);
			}
		}
		
		// Return the output
		return $output;
	}
	
	private function parse_row($row) {
		// Split the comma delimted row
		$cells = preg_split("/,/", $row);
		
		// Go through each cell and see if we encounter a double quote
		foreach($cells as $index => $value) {
			// When we encounter a double quote at the start of a cell, we've got a quoted string
			if(preg_match("/^\"/", $value)) {
				// Concatenate the value with the next cell and remove the double quotes
				$cells[$index] = preg_replace("/^\"|\"$/", "", $cells[$index] . $cells[$index+1]);
				
				// Drop the next cell from the array
				array_splice($cells, $index+1, 1);
			}
		}
		return $cells;
	}
	
	private function output_error($err) {
		$err = implode("", $err);
		
		// Remove everything outside of the H1 tag
		$err = preg_replace("/[\s\S]*<H1>|<\/H1>[\s\S]*/i", "", $err);
		
		// Return the error
		return $err;
		
		// Eventually we'll just throw the error rather than return the error output
		throw new Exception($err);
	}
}


// USAGE EXAMPLE

// First, get the token.
// The GoogleClientLogin function will provide the token, given a Google Account email address, password, and service
// (in this case, fusiontables)
$token = GoogleClientLogin("mygm...@gmail.com", "mygoogleaccountpassword", "fusiontables"); 

// Create a new instance of FusionTable, passing in the token generated by GoogleClientLogin
$ft = new FusionTable($token); 

// Have fun!  Use the FusionTable->query method to run queries.
// It will automatically take care of using the GET or POST method, depending on the type of query
// The output is an array of associative arrays.
// The associative arrays use the csv headers for the keys, and the values are the values in the csv columns
$output = $ft->query("SELECT * FROM FOOTABLE WHERE FOO=1");
$ft->query("INSERT INTO FOOTABLE (FOO,BAR) VALUES (1,2)");
]]&gt;
</script></p>

<!– google_ad_section_end –>
<p><a href="http://feedads.g.doubleclick.net/~a/q0-XHmuLAOyM_-o9MvVksHFriIM/0/da"><img src="http://feedads.g.doubleclick.net/~a/q0-XHmuLAOyM_-o9MvVksHFriIM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/q0-XHmuLAOyM_-o9MvVksHFriIM/1/da"><img src="http://feedads.g.doubleclick.net/~a/q0-XHmuLAOyM_-o9MvVksHFriIM/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=HOEdic1NkN8:0WdQeRAG8ZY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=HOEdic1NkN8:0WdQeRAG8ZY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=HOEdic1NkN8:0WdQeRAG8ZY:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=HOEdic1NkN8:0WdQeRAG8ZY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=HOEdic1NkN8:0WdQeRAG8ZY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=HOEdic1NkN8:0WdQeRAG8ZY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=HOEdic1NkN8:0WdQeRAG8ZY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=HOEdic1NkN8:0WdQeRAG8ZY: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/HOEdic1NkN8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geeklad.com/google-fusion-tables-could-be-a-game-changer/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://geeklad.com/google-fusion-tables-could-be-a-game-changer</feedburner:origLink></item>
		<item>
		<title>Turn Any File into an EXE with Convert to EXE</title>
		<link>http://feeds.geeklad.com/~r/GeekLad/~3/psBWvz060ew/convert-to-exe-with-free-program</link>
		<comments>http://geeklad.com/convert-to-exe-with-free-program#comments</comments>
		<pubDate>Mon, 07 Dec 2009 10:21:24 +0000</pubDate>
		<dc:creator>GeekLad</dc:creator>
				<category><![CDATA[PC Software]]></category>
		<category><![CDATA[software utils]]></category>

		<guid isPermaLink="false">http://geeklad.com/?p=1996</guid>
		<description><![CDATA[If you&#8217;re a geek like me, you may on occasion have run into a situation where you had a file that you needed to convert to exe. I had read a few forum posts and tutorials on how to do this with self-extracting installers, and I even managed to do it with a 7-zip tool [...]]]></description>
			<content:encoded><![CDATA[
<!– google_ad_section_start –>
<p><img src="http://geeklad.com/wp-content/uploads/2009/12/converttoexe_logo.png" alt="converttoexe_logo" title="converttoexe_logo" width="160" height="160" class="alignleft size-full wp-image-1997" style="border: 0 none;" />If you&#8217;re a geek like me, you may on occasion have run into a situation where you had a file that you needed to convert to exe.  I had read a few forum posts and tutorials on how to do this with self-extracting installers, and I even managed to do it with a <a href="http://www.7-zip.org/">7-zip</a> tool called <a href="http://7zsfx.solta.ru/en/">7zSD</a>.  It then dawned on me that I could use 7zSD and some VBScript to create a tool to automate it.  Thus, my Convert to EXE tool was born.</p>
<p><span id="more-1996"></span>Initially, I wanted just to convert a VBScript into an executable file.  The reason I wanted to do this was to add a Java application to <a href="http://geek-menu.sourceforge.net/">geek.menu</a> (a fork of the <a href="http://portableapps.com/suite">PortableApps.com Suite</a>).  I then realized that it might be useful to expand the tool to convert batch files to exe, or any other kind of file for that matter.  So I did just that.</p>
<p style="text-align: center;"><a style="border: 1px solid #888888; padding: 4px 8px; font-weight: bold;" href="http://geeklad.com/downloads/converttoexe.exe">Download Convert to EXE</a></p>
<h3><a name="usage">Usage</a></h3>
<p>It&#8217;s pretty stupid-simple to use.  Just launch the exe, navigate to the file you want to convert to an EXE and select it.</p>
<p><img src="http://geeklad.com/wp-content/uploads/2009/12/convert-to-exe-file-dialog.png" alt="convert-to-exe-file-dialog" title="convert-to-exe-file-dialog" width="563" height="409" class="alignnone size-full wp-image-2009" style="border: 0 none;" /></p>
<p>The tool will create an exe file in the same directory where the file you are converting to exe is located.</p>
<p><img src="http://geeklad.com/wp-content/uploads/2009/12/new-exe.png" alt="new-exe" title="new-exe" width="115" height="66" class="alignnone size-full wp-image-2010" style="border: 0 none;" /></p>
<p>If you are converting a batch file to exe (or some other console program), you&#8217;ll be pleased to know that the exe file the tool generates never displays the command line window.  There is one command line parameter you can use when launching <code>converttoexe.exe</code>: <code>/launch</code></p>
<p><code>/launch</code> allows you to just specify a command you want to place into an exe.  First, run <code>converttoexe.exe /launch</code> (you can do this from the <strong>Run&#8230;</strong> command in your Windows Start menu).  It will first prompt you for the command you want to run.  Be sure to place quotes if the filename and/or path contains spaces, so that it will launch properly.</p>
<p><img src="http://geeklad.com/wp-content/uploads/2009/12/convert-to-exe-launch-parameter-dialog.png" alt="convert-to-exe-launch-parameter-dialog" title="convert-to-exe-launch-parameter-dialog" width="363" height="153" class="alignnone size-full wp-image-2017" style="border: 0 none;" /></p>
<p>After you provide the command, you&#8217;ll be prompted for the name and location of the exe file it will create.  Navigate to where you want to save the new exe and click Open.  The new exe will be saved there with the name you selected.</p>
<p>The <code>/launch</code> feature is good to use if you have a program that needs to be launched with specific command line parameters.  A good example is if you have a java application or something, where it needs to be launched with <code>javaw.exe</code> and then a bunch of parameters after it.</p>
<p>The PortableApps.com suite and geek.menu only recognize exe files for the launch menu.  This makes Convert to EXE ideal for placing Java applications into them.  Even better is the fact that they are launched without ever displaying the command window.  It is one of the easier and elegant solutions you&#8217;ll find for adding a Java application to the PortableApps.com suite.</p>
<h3><a name="changing-the-icon-of-the-exe">Changing the Icon of the EXE File</a></h3>
<p>If you want to change the icon of the output exe file, you can use a nice little tool called <a href="http://www.angusj.com/resourcehacker/">Resource Hacker</a>.  Just open the exe in resource hacker, and navigate to <strong>Icon Group</strong> &gt; <strong>101</strong> &gt; <strong>0</strong>.</p>
<p><img src="http://geeklad.com/wp-content/uploads/2009/12/resource-hacker-screen.png" alt="resource-hacker-screen" title="resource-hacker-screen" width="439" height="367" class="alignnone size-full wp-image-2004" style="border: 0 none;" /></p>
<p>Then <strong>Action</strong> &gt; <strong>Replace Icon &#8230;</strong>.</p>
<p><img src="http://geeklad.com/wp-content/uploads/2009/12/replace-icon-screen.png" alt="replace-icon-screen" title="replace-icon-screen" width="452" height="414" class="alignnone size-full wp-image-2005" style="border: 0 none;" /></p>
<p>Click <strong>Open file with new icon&#8230;</strong>, navigate to the location with the icon and click <strong>Open</strong>.  Click the <strong>Replace</strong> button.  Finally, click <strong>File</strong> &gt; <strong>Save</strong>.  This is exactly what I did to change the icon for <code>converttoexe.exe</code>.</p>
<h3><a name="techincal-details">Technical Details and Source Code</a></h3>
<p>I built the application in very much the same way in which it builds other exe files.  There is a main VBScript (<code>converttoexe.vbs</code>) and a partial script used as a wrapper (<code>wrapper.vbs</code>) to execute the desired file.  Essentially what the tool does is create a self-extracting 7-zip archive, and uses some VBScript as a wrapper to launch the file.  It does nothing more than create a self-extracting archive that launches the file that is compressed into it.</p>
<p>If you&#8217;re interested in looking at the code and modifying it, I&#8217;ve made it available as well (under the GPL):</p>
<p style="text-align: center;"><a style="border: 1px solid #888888; padding: 4px 8px; font-weight: bold;" href="http://geeklad.com/downloads/converttoexe_source.zip">Download the Convert to EXE Source Code</a></p>
<p>To &#8220;compile&#8221; it, just run build.bat.  It doesn&#8217;t really compile anything, it just builds a self-extracting archive containing several files:</p>
<ul>
<li><code>converttoexe.vbs</code>: This is the file containing most of the VBScript code to generate the exe files</li>
<li><code>wrapper.vbs</code>: This is a partial VBScript file that is used to launch the file being &#8220;converted&#8221; to an exe</li>
<li><code>wrapper.txt</code>: This is the self-extracting archive configuration file for the exes that will be converted</li>
<li><code>7z.exe</code>: The 7-zip archiving program</li>
<li><code>7zsd.sfx</code>: The 7-zip self-extracting builder</li>
</ul>
<p>The <code>build.bat</code> file is pretty straight forward and easy to follow.  It creates a 7-zip archive file called converttoexe.7z that contains all the files that are necessary to build other exe files.  The only line that looks a little weird is the line that actually builds the exe:</p>
<p><code>copy /y /b 7zsd.sfx + build.txt + converttoexe.7z converttoexe.exe</code></p>
<p>It combines the <code>7zsd.sfx</code> file, <code>build.txt</code> file (the configuration file for the self-extracting archive), and the converttoexe.7z archive that contains all the magic necessary to build other exe files.  Feel free to let me know if you make any modifications/enhancements to the scripts.  I can update the downloads here.</p>

<!– google_ad_section_end –>
<p><a href="http://feedads.g.doubleclick.net/~a/HitS5QOo7VPs5yu3-JbNl6nhheo/0/da"><img src="http://feedads.g.doubleclick.net/~a/HitS5QOo7VPs5yu3-JbNl6nhheo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/HitS5QOo7VPs5yu3-JbNl6nhheo/1/da"><img src="http://feedads.g.doubleclick.net/~a/HitS5QOo7VPs5yu3-JbNl6nhheo/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=psBWvz060ew:DX0FK1XJZok:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=psBWvz060ew:DX0FK1XJZok:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=psBWvz060ew:DX0FK1XJZok:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=psBWvz060ew:DX0FK1XJZok:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=psBWvz060ew:DX0FK1XJZok:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=psBWvz060ew:DX0FK1XJZok:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=psBWvz060ew:DX0FK1XJZok:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=psBWvz060ew:DX0FK1XJZok: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/psBWvz060ew" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geeklad.com/convert-to-exe-with-free-program/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		<feedburner:origLink>http://geeklad.com/convert-to-exe-with-free-program</feedburner:origLink></item>
		<item>
		<title>Download the Google Chrome OS Virtual Machine</title>
		<link>http://feeds.geeklad.com/~r/GeekLad/~3/D-FL_rfonKU/download-the-google-chrome-os-virtual-machine</link>
		<comments>http://geeklad.com/download-the-google-chrome-os-virtual-machine#comments</comments>
		<pubDate>Fri, 20 Nov 2009 05:24:10 +0000</pubDate>
		<dc:creator>GeekLad</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Operating Systems]]></category>
		<category><![CDATA[Web Browsers]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Chrome]]></category>
		<category><![CDATA[Google Chrome OS]]></category>

		<guid isPermaLink="false">http://geeklad.com/?p=1961</guid>
		<description><![CDATA[Last week, Techcrunch reported rumors of the release of the Google Chrome OS. They stated that the info came from a reliable source, and indeed that source was reliable. Google had an event at their headquarters, and indeed provided new details and a demo of the Chrome OS. The Chromium Blog has some great videos [...]]]></description>
			<content:encoded><![CDATA[
<!– google_ad_section_start –>
<p><img class="size-full wp-image-1654 alignleft" style="border: 0 none;" title="Google Chrome Logo" src="http://geeklad.com/wp-content/uploads/2009/07/google-chrome-ball.jpg" alt="google-chrome-ball" width="150" height="150" /> Last week, <a href="http://www.techcrunch.com/2009/11/13/google-chrome-os-to-launch-within-a-week/">Techcrunch reported rumors of the release of the Google Chrome OS</a>.  They stated that the info came from a reliable source, and indeed that source was reliable.  Google had an event at their headquarters, and indeed <a href="http://googleblog.blogspot.com/2009/11/releasing-chromium-os-open-source.html">provided new details and a demo of the Chrome OS</a>.  The Chromium Blog has <a href="http://blog.chromium.org/2009/11/hello-open-source-developers-would-you.html">some great videos that provide some additional information about Chrome OS</a> as well.</p>
<p><span id="more-1961"></span>The <a href="http://www.chromium.org/chromium-os/building-chromium-os">Chromium OS source code is available for download</a> (Chromium OS is the open-source version of Google Chrome OS), and you can compile and build it.  It took some time, but I did manage to do this on my 64-bit Ubuntu 9.04 (Jaunty Jackalope) machine.  I also managed to put together a <a href="http://www.virtualbox.org/">VirtualBox</a> virtual appliance that is all ready to go.  I built a torrent for it, so feel free to download it here:</p>
<p style="text-align: center;"><a style="border: 1px solid #888888; padding: 4px 8px; font-weight: bold;" href="http://geeklad.com/downloads/chromiumos.torrent">Download the Chromium OS VirtualBox Appliance Torrent</a></p>
<p>Please continue to seed, as I&#8217;m sure there will be many people out there wanting to try it out.</p>
<p>To use it, just start up VirtualBox, click <strong>File</strong> and then <strong>Import</strong>.  Navigate to the chromiumos.ovf file and select it.  The virtual appliance will be imported into VirtualBox and you should be good to go.</p>
<p>I also included a txt file that more or less has the commands I used to build it.  You may be able to run it as a script, although I haven&#8217;t confirmed that it will work.  I guess you could say I more or less took &#8220;script-like notes&#8221; as I was building Chromium OS.</p>
<p>If you hit Ctrl+Alt+T when you first log in, you&#8217;ll get a shell prompt.  You can run &#8220;sudo su&#8221; (no quotes) to log in as root, and I&#8217;ve set the password to &#8220;password&#8221; (no quotes).  If you use this machine for anything serious (although I doubt you would), be sure to change the password.</p>
<p>You should be running VirtualBox 3.0.12, and when you import the virtual appliance everything should be configured properly.  If you get an error that says &#8220;network not connected and offline login fail&#8221; when you try to log in, be sure that the virtual network adapter is set to <strong>Intel Pro/1000 MT Desktop (82540EM)</strong>.</p>
<p>If the network adapter is already properly configured but you are still seeing the error, try logging in with the user &#8220;chronos&#8221; with the password &#8220;password&#8221; (no quotes).  This should log you in and bring up the chrome browser window.  If you don&#8217;t see a Google Accounts login screen, try hitting the refresh button.  That should bring up the Google Accounts login screen.</p>
<p>It is absolutely astounding how fast it boots.  It really is nearly instant-on and takes a mere few seconds to bring up the login screen.</p>
<p><img src="http://geeklad.com/wp-content/uploads/2009/11/chromium-os-login.png" alt="chromium-os-login" title="chromium-os-login" width="800" height="648" class="alignnone size-full wp-image-1962" title="Google Chrome OS Login Screen" style="border: 0 none;" /></p>
<p>Once you log in with your Gmail account, it launches and you&#8217;ll see the Chromium interface open up to your Gmail.  There is also a Google Calendar tab and a New Tab tab.  The little chrome sphere appears in the upper left corner, but when you click on it you don&#8217;t get a menu as you see in some of the Chrome OS videos.  Instead, you get a Google.com account login page.</p>
<p><img src="http://geeklad.com/wp-content/uploads/2009/11/google-chrome-running.png" alt="google-chrome-running" title="google-chrome-running" width="800" height="648" class="alignnone size-full wp-image-1963" title="Google Chrome OS in Action" style="border: 0 none;" /></p>
<p>As you can see, it looks very much like the <a href="http://www.techcrunch.com/2009/10/13/a-first-glimpse-of-chrome-os-in-the-flesh-at-least-the-browser-part/">Chrome OS screenshots that had surfaced last month</a>.  Of course, being that this is running on a virtual machine without any decent video drivers on the operating system, the resolution is quite low (800&#215;600).  Your dear old granddad may be the only one that actually finds it visually appealing at this resolution.</p>
<p>Right now the most impressive thing is how fast this operating system loads.  Of course, it should load fast because there really is hardly anything there.  In any case, it is rather neat to see an early release in action.  The fact that it actually works on a virtual machine is quite promising.  Eventually as drivers for more hardware are incorporated into it, it should be possible to run it your own real hardware.</p>
<p><strike>I also found a VMWare virtual disk image on a Google Wave about the Chrome OS.  You can download it here:</p>
<p style="text-align: center;"><a style="border: 1px solid #888888; padding: 4px 8px; font-weight: bold;" href="http://chromeos-images.s3.amazonaws.com/chromeos-image-999.999.32309.211410-a1.vmdk.bz2">Download the Chromium OS VMWare Virtual Disk Image</a></p>
<p>As of now, the link to the VMWare disk image is valid and the download works.</strike></p>
<p><strong><em>Update:</em></strong> I just went into the <a href="https://wave.google.com/wave/#restored:wave:googlewave.com!w%252Bb1r8KLVBE">Chrome OS Wave</a> I found with the link to the VMWare disk image, and apparently the poor guy that posted that file to Amazon Web Services ran up a $380 bill so he took the file down.  Here&#8217;s the torrent of the same file posted up  on Pirate Bay:</p>
<p style="text-align: center;"><a style="border: 1px solid #888888; padding: 4px 8px; font-weight: bold;" href="http://torrents.thepiratebay.org/5170843/chromeos-image-999.999.32309.211410-a1.vmdk.bz2.5170843.TPB.torrent">Download the Chromium OS VMWare Virtual Disk Image Torrent</a></p>
<p>However, I haven&#8217;t tried using it, so I can&#8217;t confirm that it will run on VMWare without issue.  Enjoy your Google Chrome OS virtual machines!</p>

<!– google_ad_section_end –>
<p><a href="http://feedads.g.doubleclick.net/~a/9_jNgSJNMq4WhIOSPEa-4WElwgo/0/da"><img src="http://feedads.g.doubleclick.net/~a/9_jNgSJNMq4WhIOSPEa-4WElwgo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/9_jNgSJNMq4WhIOSPEa-4WElwgo/1/da"><img src="http://feedads.g.doubleclick.net/~a/9_jNgSJNMq4WhIOSPEa-4WElwgo/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=D-FL_rfonKU:ZcHuJz6Sjaw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=D-FL_rfonKU:ZcHuJz6Sjaw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=D-FL_rfonKU:ZcHuJz6Sjaw:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=D-FL_rfonKU:ZcHuJz6Sjaw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=D-FL_rfonKU:ZcHuJz6Sjaw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=D-FL_rfonKU:ZcHuJz6Sjaw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=D-FL_rfonKU:ZcHuJz6Sjaw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=D-FL_rfonKU:ZcHuJz6Sjaw: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/D-FL_rfonKU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geeklad.com/download-the-google-chrome-os-virtual-machine/feed</wfw:commentRss>
		<slash:comments>78</slash:comments>
		<feedburner:origLink>http://geeklad.com/download-the-google-chrome-os-virtual-machine</feedburner:origLink></item>
		<item>
		<title>Make Free Phone Calls with Google Voice, Gizmo, and Orgasmatron V: Google Voice Edition</title>
		<link>http://feeds.geeklad.com/~r/GeekLad/~3/f969t_lS3A0/free-phone-calls-with-google-voice-asterisk-and-gizmo</link>
		<comments>http://geeklad.com/free-phone-calls-with-google-voice-asterisk-and-gizmo#comments</comments>
		<pubDate>Sun, 01 Nov 2009 18:59:59 +0000</pubDate>
		<dc:creator>GeekLad</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[Gizmo]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Voice]]></category>

		<guid isPermaLink="false">http://geeklad.com/?p=1911</guid>
		<description><![CDATA[Earlier this year, I had posted a hack for making free phone calls with Google Voice, Gizmo, and Asterisk. Since then, Google closed the door on inbound SIP calls and thus the hack no longer works. Fortunately a new possibility has emerged that makes it possible once again. Nerd Vittles has put together another great [...]]]></description>
			<content:encoded><![CDATA[
<!– google_ad_section_start –>
<p><img class="alignleft size-full wp-image-1331" style="border: 0 none;" title="google-voice-logo.gif" src="http://geeklad.com/wp-content/uploads/2009/04/google-voice-logo.gif" alt="google-voice-logo.gif" width="191" height="62" />Earlier this year, I had posted a hack for <a href="http://geeklad.com/make-free-phone-calls-anywhere-in-the-usa-with-google-voice-gizmo-and-asterisk">making free phone calls with Google Voice, Gizmo, and Asterisk</a>.  Since then, Google closed the door on inbound SIP calls and thus the hack no longer works.  Fortunately a new possibility has emerged that makes it possible once again.</p>
<p><span id="more-1911"></span><a href="http://nerdvittles.com">Nerd Vittles</a> has put together another great hack for making free calls with Google Voice and Asterisk: <a href="http://nerdvittles.com/?p=637">Orgasmatron V, Google Voice Edition</a>.  It makes use of an Asterisk Linux distribution called <a href="http://pbxinaflash.net/">PBX in a Flash</a>.  After installing PBX in a Flash, you download and run the Orgasmatron V script, and you have a fully-functional Asterisk system ready to make free calls with Google Voice.</p>
<p>In his instructions, NerdUno recommends using <a href="http://www.ipkall.com/">IPkall</a> or <a href="http://www.sipgate.com/one">SIPgate</a> for a ringback number that is necessary for Orgasmatron V to work.  It is actually possible and relatively easy to also use <a href="http://gizmo5.com/">Gizmo</a> as the ringback number, which I will explain in this post.  His <a href="http://nerdvittles.com/?p=637">directions for setting up Orgasmatron V</a> are very detailed and relatively easy to follow, so I won&#8217;t repost them here.  Just follow his directions up until the part for configuring Google Voice.</p>
<h3><a name="setting-up-gizmo">Setting Up Gizmo</a></h3>
<p>First, you will want to create a Gizmo account.  Once you create your Gizmo account, go to <a href="https://my.gizmo5.com">https://my.gizmo5.com</a> and log in.  Bring up the <a href="https://my.gizmo5.com/gizmo5/app?class=MySip;proc=callForwardingOverview">Call Forwarding tab</a> in your account settings.  Click on the <strong>Forwarding All Calls</strong> radio button under <em>Status</em> and click on the <strong>SIP</strong> radio button under <em>Forward to</em>.  Set it up to forward to <strong>gv-incoming@x.x.x.x</strong> where <em>x.x.x.x</em> is the IP address of your Asterisk server.</p>
<p><a rel="lightbox:gv-setup" href="http://geeklad.com/wp-content/uploads/2009/11/Gizmo-Call-Forwarding.png"><img class="alignnone size-large wp-image-1918" style="border: 0 none;" title="Gizmo Call Forwarding" src="http://geeklad.com/wp-content/uploads/2009/11/Gizmo-Call-Forwarding-1024x423.png" alt="Gizmo Call Forwarding" width="614" height="254" /></a></p>
<h3><a name="setting-up-google-voice">Setting Up Google Voice</a></h3>
<p>The next step, is to log into your Google Voice account.  Log in and go to the <strong>Settings</strong> screen and click on <strong>Add another phone</strong>.  Call it whatever you want, and enter in the 10 digit number.  Be sure to select Gizmo as the phone type.</p>
<p><img class="alignnone size-full wp-image-1921" style="border: 0 none;" title="Add Gizmo Phone to Google Voice" src="http://geeklad.com/wp-content/uploads/2009/11/Add-Gizmo-Phone-to-Google-Voice.png" alt="Add Gizmo Phone to Google Voice" width="357" height="324" /></p>
<p>When You click <strong>Save</strong>, you will be prompted to verify the phone.  <a href="http://gizmo5.com/pc/download/">Download and install the Gizmo client</a> and log into your account with the Gizmo client.  Click the <strong>Connect</strong> button on Google Voice to verify the Gizmo phone.  When the Gizmo phone rings, answer and dial the two digit code.</p>
<p><img class="alignnone size-full wp-image-1924" style="border-color: initial;" title="Gizmo Phone Verification" src="http://geeklad.com/wp-content/uploads/2009/11/Gizmo-Phone-Verification.png" alt="Gizmo Phone Verification" width="331" height="273" /></p>
<h3><a name="setting-up-asterisk">Setting Up Asterisk</a></h3>
<p>Once you&#8217;ve installed PBX in a Flash, installed Orgasmatron V, set up Gizmo,  set up Google Voice, you&#8217;re ready to download and run the Google Voice configuration script for Orgasmatron.  Just log into your Asterisk box as root, and run the following commands at the command line:</p>
<p><code></p>
<pre>
	cd /root
	wget http://pbxinaflash.net/orgasmatron/configure-gv
	chmod +x configure-gv
	./configure-gv
</pre>
<p></code></p>
<p>Just follow the prompts and enter your Google Voice number (without the 1), your Google Account login credentials, and use your Gizmo number as the ringback number (be sure to include the 1 at the beginning).  </p>
<h3><a name="making-free-phone-calls">Making Free Phone Calls</a></h3>
<p>Once everything is all set up with Google Voice, Gizmo, and Asterisk, you&#8217;re ready to log into an extension with a soft phone and make free calls.  I highly recommend <a href="http://www.counterpath.com/x-lite.html&#038;active=4">downloading X-Lite</a>, it is probably one of the best free softphones out there.  <a href="http://ekiga.org/">Ekiga</a> is another pretty decent soft phone you can use, if you don&#8217;t like X-Lite.</p>
<p>To make and receive calls, log into extension 701 with your softphone.  Use 701 as the account username and the proper password (this would be the secret for extension 701 you selected when securing Orgasmatron as suggested on Nerd Vittles).  The SIP server is of course the Asterisk box.  Try making an outbound phone call.  You should hear a lady say she is connecting your call, then some catchy music, and eventually a ringtone.</p>
<h3><a name="setup-tips">Some Additional Setup Tips</a></h3>
<p>If you are unable to make or receive calls after you&#8217;ve set everything up, it may be that your server is sitting behind a router/firewall.  For it to work properly, you will need to forward port 5060 to your Asterisk box.  You may have to refer to the instructions for your particular router on how to do this.</p>
<p>You may also run into issues if your Asterisk box does not have a static IP address.  If your IP address ever changes, you will need to update the new forwarding address within Gizmo.  To avoid such problems, you may want to set up an account on <a href="http://www.dyndns.org">DynDNS</a>.</p>
<p>You can <a href="http://www.dyndns.com/support/clients/">download a DynDNS update client</a> that will automatically update your IP address with DynDNS.  You could <a href="http://cdn.dyndns.com/inadyn.zip">download inadyn for Linux</a> and install it on your Asterisk box.  Be sure to check out the <a href="http://www.dyndns.com/support/kb/using_inadyn_with_dyndns_services.html">inadyn instructions</a> to set up.  If you have a Windows or Mac box on the same network as your Asterisk machine, you could always download and install your client for that computer instead of the Asterisk box.  Alternatively, you could just <a href="https://www.dyndns.com/account/services/hosts/">manually update your IP address on the DynDNS website</a>.</p>
<p>Once you have DynDNS set up, go back to the <a href="https://my.gizmo5.com/gizmo5/app?class=MySip;proc=callForwardingOverview">Call Forwarding tab</a> in your Gizmo settings and change the SIP call foward to gv-ringback@your_dyndns_account.dyndns.org (replacing your_dyndns_account.dyndns.org with the proper domain for your machine).</p>
<h3><a name="how-it-works">How Does it All Work?</a></h3>
<p>Behind the scenes, the calls are made with a <a href="http://code.google.com/p/pygooglevoice/">Python script for making Google Voice calls</a>.  Orgasmatron V does the magic of receiving the inbound call from Google voice into a call group and automatically connecting that call to your extension.  This makes it all quite seamless to the end-user making the calls.</p>
<h3><a name="stay-tuned">Stay Tuned</a></h3>
<p>In an effort to further reduce the complexity of this solution, I&#8217;ve put together a <a href="http://wikis.sun.com/display/Appliance/Virtual+Appliances">VirtualBox appliance</a> for Orgasmatron V.  Although Orgasmatron V is by far the easiest solution for hooking up Google Voice to Asterisk, packaging it all together as a virtual appliance makes it a little bit easier and a lot quicker.  I&#8217;ll be posting about that soon, so stay tuned!</p>

<!– google_ad_section_end –>
<p><a href="http://feedads.g.doubleclick.net/~a/bTKQ97NfStRHRjQPYD0gqEFIvJs/0/da"><img src="http://feedads.g.doubleclick.net/~a/bTKQ97NfStRHRjQPYD0gqEFIvJs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/bTKQ97NfStRHRjQPYD0gqEFIvJs/1/da"><img src="http://feedads.g.doubleclick.net/~a/bTKQ97NfStRHRjQPYD0gqEFIvJs/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=f969t_lS3A0:z44IWqxfOVs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=f969t_lS3A0:z44IWqxfOVs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=f969t_lS3A0:z44IWqxfOVs:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=f969t_lS3A0:z44IWqxfOVs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=f969t_lS3A0:z44IWqxfOVs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=f969t_lS3A0:z44IWqxfOVs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=f969t_lS3A0:z44IWqxfOVs:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=f969t_lS3A0:z44IWqxfOVs: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/f969t_lS3A0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geeklad.com/free-phone-calls-with-google-voice-asterisk-and-gizmo/feed</wfw:commentRss>
		<slash:comments>23</slash:comments>
		<feedburner:origLink>http://geeklad.com/free-phone-calls-with-google-voice-asterisk-and-gizmo</feedburner:origLink></item>
		<item>
		<title>5 Reasons Google Wave Is Not Ready</title>
		<link>http://feeds.geeklad.com/~r/GeekLad/~3/ogubL0042VU/5-reasons-google-wave-is-not-ready</link>
		<comments>http://geeklad.com/5-reasons-google-wave-is-not-ready#comments</comments>
		<pubDate>Sat, 24 Oct 2009 19:07:13 +0000</pubDate>
		<dc:creator>GeekLad</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Wave]]></category>

		<guid isPermaLink="false">http://geeklad.com/?p=1860</guid>
		<description><![CDATA[I was fortunate enough to receive an invitation into Google Wave shortly after the initial 100,000 invititations went out last month. Initially, I was a bit overwhelmed and did not really know where to begin or what to do. Bwana was kind enough to engage in a real-time wave with me, and show me around [...]]]></description>
			<content:encoded><![CDATA[
<!– google_ad_section_start –>
<p><img class="alignleft size-full wp-image-1775" style="border: 0 none;" title="google-wave-logo.png" src="http://geeklad.com/wp-content/uploads/2009/09/google-wave-logo.png" alt="google-wave-logo.png" width="144" height="126" />I was fortunate enough to receive an invitation into Google Wave shortly after the initial <a href="http://googleblog.blogspot.com/2009/09/surfs-up-wednesday-google-wave-update.html">100,000 invititations</a> went out last month.  Initially, I was a bit overwhelmed and did not really know where to begin or what to do.  <a href="http://www.bwana.org">Bwana</a> was kind enough to engage in a real-time wave with me, and show me around a bit.  Afterwards, I began to see the potential.  However, I think there are many reasons why Google Wave still is not ready for prime-time.</p>
<p><span id="more-1860"></span></p>
<h3><a name="google-wave-has-no-access-control">Lack of Access Control</a></h3>
<p><img class="alignright size-full wp-image-1880" style="border: 0 none;" title="access-control" src="http://geeklad.com/wp-content/uploads/2009/10/access-control.jpg" alt="access-control" width="150" height="150" /><br />
Google Wave does not have any sort of access control for managing waves and wave participants:</p>
<ul>
<li>Anyone can be added to a wave by a participant in the wave.</li>
<li>Any wave participant can add a bot to the wave (because bots are simply treated as participants).</li>
<li>It is not possible to remove participants (except for bots) from a wave.</li>
<li>Anyone can modify any part of the wave.</li>
</ul>
<p>Here is what I think Google Wave needs to implement to resolve the access control issues:</p>
<ul>
<li>Allow the wave creator do add/remove any participant from a wave.</li>
<li>Allow the wave creator to assign/modify the following permissions that can be set at the wave and participant level:
<ul>
<li>Permission to add bots to the wave.</li>
<li>Permission to invite other participants to the wave.</li>
<li>Permission to remove participants from the wave.</li>
<li>Read-only or read/write access to the wave.</li>
<li>Permission to grant/modify each (or all) permissions for other participants and/or the entire wave.</li>
</ul>
</li>
</ul>
<p>Without access control, things can quickly get out of hand if you are trying to work on a collaborative project that is only intended for certain people.  Even if you do manage to maintain control as to who has access to a wave, you may only want to allow certain people permission to perform certain functions.</p>
<p><em><strong>Image Credit</strong>: <a href="http://picasaweb.google.com/lh/photo/8WIU4KyHkrzHY6wadj-qNg">Brandon Lowery</a></em></p>
<h3><a name="google-wave-needs-better-contact-management">Poor Contact Management</a></h3>
<p><img src="http://geeklad.com/wp-content/uploads/2009/10/contacts.jpg" alt="contacts" title="contacts" width="150" height="150" class="alignleft size-full wp-image-1891" style="border: 0 none;" /><br />
When you click on the <span style="text-decoration: underline;">Manage contacts</span> link in Google Wave, you are taken to <a href="http://www.google.com/contacts/">Google Contacts</a>.  Unfortunately there is hardly any correlation between what you see in your Google Contacts and what you see in your Google Wave contact list.  Although everyone in your Google Wave contacts list has a @googlewave.com &#8220;address&#8221; (it is not an email address although it looks like one), within Google Contacts you&#8217;ll see no addresses with googlewave.com.</p>
<p>If you want to remove someone from your Google Wave contacts, you have to remove them from your Google Contacts.  This may not be something you want to do, as you may wish to keep them in your Google Contacts and remove them from your Google Wave contacts or vice versa.  Either Google Wave needs its own contact management, or Google Contacts needs to incorporate functionality for managing Google Wave contacts.</p>
<p><em><strong>Image Credit</strong>: <a href="http://commons.wikimedia.org/wiki/File:Rollkartei_hg.jpg">Hannes Grobe</a></em></p>
<h3><a name="google-wave-needs-mailing-lists">Lack of Groups</a></h3>
<p><img src="http://geeklad.com/wp-content/uploads/2009/10/team.jpg" alt="team" title="team" width="150" height="150" class="alignright size-full wp-image-1894" style="border: 0 none;" /><br />
If you deal with multiple groups of people when you communicate via email, mailing lists are absolutely essential.  Google Wave has no way to group your contacts together to build the equivalent of mailing lists.  Without such a function, you have to manually add each and every participant you want on a wave.  Not only is this a major inconvenience, but you may omit someone that needs to be a wave participant or add someone that should not be a participant.</p>
<p>Google Wave needs to implement groups.  Perhaps it can be incorporated as part of the improved contact management I&#8217;ve suggested, or implemented as a separate feature.  Regardless, it should also become a part of access control.  That way access control can be set and modified at a wave, group, and participant level.</p>
<p><em><strong>Image Credit</strong>: <a href="http://www.flickr.com/photos/lumaxart/2137729430/">lumaxart</a></em></p>
<h3><a name="google-wave-needs-legacy-support">Lack of &#8220;Legacy Support&#8221;</a></h3>
<p><img src="http://geeklad.com/wp-content/uploads/2009/10/email.jpg" alt="email" title="email" width="150" height="150" class="alignleft size-full wp-image-1895" style="border: 0 none;" /><br />
You cannot expect someone to abandon a very well-established legacy technology (email) without providing reverse compatibility and legacy support.  The world cannot and will not just drop email in favor of Google Wave without an interim solution that supports both technologies.  The fact that Google Wave addresses do have the same appearance as email addresses does seem to indicate there may be plans to allow Google Wave accounts to receive email.</p>
<p>It is very inconvenient having to check communications from multiple sources rather than having it all in one place.  This is the reason why I have all my email forwarded to one single Gmail account.  I also take advantage of the <a href="http://gmailblog.blogspot.com/2009/07/send-mail-from-another-address-without.html">Gmail feature that allows you to send email from other accounts</a>.</p>
<p>Google Wave needs to incorporate features to allow users to send and receive email if it is to receive the kind of wide-scale adoption Google seems to believe it is capable of achieving.  If I could just forward all of my email to my Google Wave account, receive all my communication in one place, and send emails from Google Wave as well, I would seriously consider using solely Google Wave.</p>
<p><em><strong>Image Credit</strong>: <a href="http://www.flickr.com/photos/epublicist/3509141703/">ePublicist</a></em></p>
<h3><a name="google-wave-needs-revision-control">Lack of Revision Control</a></h3>
<p><img src="http://geeklad.com/wp-content/uploads/2009/10/undo.png" alt="undo" title="undo" width="150" height="150" class="alignright size-full wp-image-1899" style="border: 0 none;" /><br />
<a href="http://en.wikipedia.org/wiki/Revision_control">Revision control</a> is absolutely essential for working in a collaborative environment.  The need eventually arises where it is necessary to revert to a previous version of a document.  Wikis provide this capability as do a variety of software development source control solutions.  Google Wave needs revision control.</p>
<p>Google Wave does have something resembling revision control with the Playback functionality.  However, you can only see the progression of a wave from start to finish, and you cannot revert to any of the frames in between.  It would appear that some of the plumbing is already there for revision control, it just needs to be implemented.</p>
<p>I&#8217;ve seen many situations in public waves where revision control was needed.  Sometimes someone unwittingly adds a bot that overwrites the initial blip, wiping away hours of hard work in the blink of an eye.  Someone may also intentionally sabotage a wave, removing a lot of valid and important information that must subsequently be manually recovered or rewritten.</p>
<p>It would be best to have revision control in Google Wave at a blip level, rather than at a wave level.  One may wish to revert to a previous version of a blip within a wave, without losing the changes that have taken place within other blips and the rest of the wave.</p>
<p><em><strong>Image Credit</strong>: <a href="http://www.iconarchive.com/show/must-have-icons-by-visualpharm/Undo-icon.html">VisualPharm</a></em></p>
<h3><a name="summary">Final Thoughts</a></h3>
<p>Google Wave is a good tool for communication and collaboration.  It has many impressive features and capabilities.  However, as you can see by the headings in this article, the problem is that it is lacking many key features for wide-scale adoption.  Given that the current Google Wave is just a preview, it is likely that these missing features and others will eventually make it into the final product.</p>

<!– google_ad_section_end –>
<p><a href="http://feedads.g.doubleclick.net/~a/jcfVbF6rDmn5RkRSGnlFCLq1_nY/0/da"><img src="http://feedads.g.doubleclick.net/~a/jcfVbF6rDmn5RkRSGnlFCLq1_nY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/jcfVbF6rDmn5RkRSGnlFCLq1_nY/1/da"><img src="http://feedads.g.doubleclick.net/~a/jcfVbF6rDmn5RkRSGnlFCLq1_nY/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=ogubL0042VU:qvozNm-6MT8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=ogubL0042VU:qvozNm-6MT8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=ogubL0042VU:qvozNm-6MT8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=ogubL0042VU:qvozNm-6MT8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=ogubL0042VU:qvozNm-6MT8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=ogubL0042VU:qvozNm-6MT8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=ogubL0042VU:qvozNm-6MT8:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=ogubL0042VU:qvozNm-6MT8: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/ogubL0042VU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geeklad.com/5-reasons-google-wave-is-not-ready/feed</wfw:commentRss>
		<slash:comments>38</slash:comments>
		<feedburner:origLink>http://geeklad.com/5-reasons-google-wave-is-not-ready</feedburner:origLink></item>
		<item>
		<title>Make Cross-Domain AJAX Requests with xdRequest</title>
		<link>http://feeds.geeklad.com/~r/GeekLad/~3/Lf0qwNbfpCo/make-cross-domain-ajax-requests-with-xdrequest</link>
		<comments>http://geeklad.com/make-cross-domain-ajax-requests-with-xdrequest#comments</comments>
		<pubDate>Thu, 15 Oct 2009 19:03:25 +0000</pubDate>
		<dc:creator>GeekLad</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[YQL]]></category>

		<guid isPermaLink="false">http://geeklad.com/?p=1843</guid>
		<description><![CDATA[xdRequest is an open-source JavaScript library that I&#8217;ve developed for making cross-domain AJAX requests. In this day and age, with web browsers becoming very fast and powerful, it has become quite possible to build web applications with much of the work performed by the client. xdRequest makes it possible to easily pull data from other [...]]]></description>
			<content:encoded><![CDATA[
<!– google_ad_section_start –>
<p><a href="http://code.google.com/p/xdrequest/">xdRequest</a> is an open-source JavaScript library that I&#8217;ve developed for making cross-domain <a href="http://en.wikipedia.org/wiki/Ajax_(programming)">AJAX</a> requests. In this day and age, with web browsers becoming very fast and powerful, it has become quite possible to build web applications with much of the work performed by the client. xdRequest makes it possible to easily pull data from other sources and manipulate it all on the client-side. With xdRequest, you will no longer need to perform data extractions/manipulations from other sources on a server. It can all happen right in the browser.</p>
<p><span id="more-1843"></span></p>
<p><a href="http://geeklad.com/wp-content/uploads/2009/10/YQL-html-data-table.png" rel="lightbox"><img src="http://geeklad.com/wp-content/uploads/2009/10/YQL-html-data-table_thumb.png" alt="Screenshot of the YQL html data table" width="160" height="240" align="right" style="border: 0 none;" /></a> I had recently been fooling around quite a bit with <a href="http://developer.yahoo.com/yql/">YQL</a>, which does provide some built-in features to make cross-domain http requests. It can be done with the html <a href="http://www.datatables.org/">open data table</a>. You can try it out from the <a href="http://developer.yahoo.com/yql/console/">YQL Console</a>.  Just go to the data tables section on the right side and select <strong>Data &gt; html</strong>. Unfortunately, the built-in html table is somewhat limited.  You can only make requests using the GET method, and it does not provide any mechanism for sending/receiving HTTP headers.</p>
<p>Someone in the <a href="http://developer.yahoo.net/forum/index.php?showforum=41">YQL forums</a> posted a <a href="http://developer.yahoo.net/forum/index.php?showtopic=1930">YQL feature request to add POST</a> and other HTTP request methods to the html table. Someone responded with the suggestion of building an open data table to do just that. I then started reading the <a href="http://developer.yahoo.com/yql/guide/yql-opentables-chapter.html">open data table documentation</a>, and came to realize that what you can do with YQL and open data tables is nothing short of astounding.  You can use <a href="http://developer.yahoo.com/yql/guide/yql-execute-chapter.html">server-side JavaScript</a> to request data from multiple sources and manipulate it in any way you see fit.</p>
<p>I started developing my own custom open data table for the particular project I was working on at the time, and eventually the project morphed into xdRequest. Because I needed to track cookies and redirects in my little project, I realized that it would be great to develop a generic library that could handle such requests.  Eventually, I more or less abandoned the previous project to develop xdRequest.  Here are some of the features, as highlighted on the project page:</p>
<ul>
<li>Make cross-domain requests using the GET and POST methods</li>
<li>Add request headers along with the requests</li>
<li>Automatically collect cookies sent by the remote web server</li>
<li>Automatically follow redirects and collect cookies along the way</li>
<li>Properly store/transmit cookies, much like the popular server-side library, <a href="http://curl.haxx.se">cURL</a></li>
<li>Automatically submits hidden fields detected within forms on webpages</li>
</ul>
<p>I also put together a relatively simple <a href="http://geeklad.com/tools/xdRequest/xdRequest-example.html">xdRequest demo</a>. It brings in data from espn.go.com. When the page loads, it makes an xdRequest to ESPN for the <a href="http://www.gatorzone.com/football/">University of Florida Football</a> schedule. I&#8217;m a die-hard Gator and UF alumnus, so that&#8217;s why I decided to start the demo with the UF football schedule. When you can click the hyperlinks in the demo, xdRequests are made to ESPN to load schedules for other teams, as well as the box scores for games. It&#8217;s a simple example, but the sky is the limit as to what you can do with xdRequest.</p>
<p>If you&#8217;re interested in learning more about the project, be sure to check out the <a href="http://code.google.com/p/xdrequest/">xdRequest project</a> page. If you&#8217;re a JavaScript geek and would like to join, just drop me a line and I&#8217;ll gladly add you to the project. I&#8217;m kind of a n00b when it comes to object-oriented programming with JavaScript, so I could definitely use some help to clean up the code, make enhancements, find bugs, and fix bugs. This is the first &#8220;official&#8221; Open Source project I&#8217;ve ever worked on, so I&#8217;m a n00b when it comes to working on OSS as well.</p>
<p>If you like xdRequest and build any cool web applications with it, let me know and I&#8217;ll link to it from the project page. If you have any feature suggestions or encounter any bugs, please report them in the <a href="http://code.google.com/p/xdrequest/issues/list">xdRequest issue tracker</a>.</p>

<!– google_ad_section_end –>
<p><a href="http://feedads.g.doubleclick.net/~a/Pho_Cb6DvNm-n5yh1sDBxZEyplc/0/da"><img src="http://feedads.g.doubleclick.net/~a/Pho_Cb6DvNm-n5yh1sDBxZEyplc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Pho_Cb6DvNm-n5yh1sDBxZEyplc/1/da"><img src="http://feedads.g.doubleclick.net/~a/Pho_Cb6DvNm-n5yh1sDBxZEyplc/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.geeklad.com/~ff/GeekLad?a=Lf0qwNbfpCo:jHq9P6X9Arw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/GeekLad?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=Lf0qwNbfpCo:jHq9P6X9Arw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=Lf0qwNbfpCo:jHq9P6X9Arw:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=Lf0qwNbfpCo:jHq9P6X9Arw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=Lf0qwNbfpCo:jHq9P6X9Arw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=Lf0qwNbfpCo:jHq9P6X9Arw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/GeekLad?i=Lf0qwNbfpCo:jHq9P6X9Arw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.geeklad.com/~ff/GeekLad?a=Lf0qwNbfpCo:jHq9P6X9Arw: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/Lf0qwNbfpCo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geeklad.com/make-cross-domain-ajax-requests-with-xdrequest/feed</wfw:commentRss>
		<slash:comments>25</slash:comments>
		<feedburner:origLink>http://geeklad.com/make-cross-domain-ajax-requests-with-xdrequest</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

Served from: geeklad.com @ 2012-02-01 09:26:47 -->

