<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Michael Grace &#187; Web Design -Dev</title>
	<atom:link href="http://geek.michaelgrace.org/category/web-design-dev/feed/" rel="self" type="application/rss+xml" />
	<link>http://geek.michaelgrace.org</link>
	<description>All my geek in one place</description>
	<lastBuildDate>Fri, 03 Feb 2012 20:32:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Colon In XML/RSS Messing Up PHP&#8217;s SimpleXML</title>
		<link>http://geek.michaelgrace.org/2011/10/colon-in-xmlrss-messing-up-phps-simplexml/</link>
		<comments>http://geek.michaelgrace.org/2011/10/colon-in-xmlrss-messing-up-phps-simplexml/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 16:06:56 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[simplexml]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=2033</guid>
		<description><![CDATA[Recently used PHP&#8217;s simpleXML to parse through a blogs RSS feed. The parsing worked great and it was simple and clean. Only problem was that the XML nodes that contained colons in the name were being discarded by simpleXML. Example: &#60;sy:updatePeriod&#62;hourly&#60;/sy:updatePeriod&#62; &#60;sy:updateFrequency&#62;1&#60;/sy:updateFrequency&#62; Not sure if this is a bug, error, or what but it was [...]]]></description>
			<content:encoded><![CDATA[<p>Recently used PHP&#8217;s simpleXML to parse through a blogs RSS feed. The parsing worked great and it was simple and clean. Only problem was that the XML nodes that contained colons in the name were being discarded by simpleXML. Example:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;sy:updatePeriod<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>hourly<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/sy:updatePeriod<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;sy:updateFrequency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/sy:updateFrequency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Not sure if this is a bug, error, or what but it was causing me grief. I haven&#8217;t been able to find others on the web complaining of this but my own solution was to remove the colons and traverse accordingly. I wrote a function that takes the feed as a string and returns the string with all colons inside tag names removed.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> removeColonsFromRSS<span style="color: #009900;">&#40;</span><span style="color: #000088;">$feed</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// pull out colons from start tags</span>
    <span style="color: #666666; font-style: italic;">// (&lt;\w+):(\w+&gt;)</span>
    <span style="color: #000088;">$pattern</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'/(&lt;\w+):(\w+&gt;)/i'</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$replacement</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'$1$2'</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$feed</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$pattern</span><span style="color: #339933;">,</span> <span style="color: #000088;">$replacement</span><span style="color: #339933;">,</span> <span style="color: #000088;">$feed</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">// pull out colons from end tags</span>
    <span style="color: #666666; font-style: italic;">// (&lt;\/\w+):(\w+&gt;)</span>
    <span style="color: #000088;">$pattern</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'/(&lt;\/\w+):(\w+&gt;)/i'</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$replacement</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'$1$2'</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$feed</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$pattern</span><span style="color: #339933;">,</span> <span style="color: #000088;">$replacement</span><span style="color: #339933;">,</span> <span style="color: #000088;">$feed</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$feed</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/10/colon-in-xmlrss-messing-up-phps-simplexml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5.TX Austin Developer Conference</title>
		<link>http://geek.michaelgrace.org/2011/10/html5-tx-austin-developer-conference/</link>
		<comments>http://geek.michaelgrace.org/2011/10/html5-tx-austin-developer-conference/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 04:24:27 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Web Design -Dev]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=2014</guid>
		<description><![CDATA[Had a great time this weekend attending the HTML5.tx developer conference. Lots of great developers and designers in the Austin area. Was fun to meet people, learn, and review technologies and techniques for building better experiences online. Some of the things discussed at the conference were HTML5 &#38; DOM APIs Advanced CSS selectors HTML5 Video [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/html5tx-austin-conference.jpg" alt="" width="640" height="426" /></p>
<p>Had a great time this weekend attending the <a href="http://html5tx.com/">HTML5.tx</a> developer conference. Lots of great developers and designers in the Austin area. Was fun to meet people, learn, and review technologies and techniques for building better experiences online. Some of the things discussed at the conference were</p>
<ul>
<li>HTML5 &amp; DOM APIs</li>
<li>Advanced CSS selectors</li>
<li>HTML5 Video</li>
<li>LESS (css)</li>
<li>Modernizer, Yepnope, and Polyfills</li>
<li>CSS3 and animations</li>
<li>Building for experience not browser</li>
</ul>
<div>I&#8217;m excited to start using the things I learned and explore some new features and tools that I learned about.</div>
<div>You can find my limited collection of photos from the event at <a href="http://photos.michaelgrace.org/Events/10-08-2011-html5tx-conference">http://photos.michaelgrace.org/Events/10-08-2011-html5tx-conference</a></div>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/10/html5-tx-austin-developer-conference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Disable Google Chrome Cache</title>
		<link>http://geek.michaelgrace.org/2011/09/disable-google-chrome-cache/</link>
		<comments>http://geek.michaelgrace.org/2011/09/disable-google-chrome-cache/#comments</comments>
		<pubDate>Mon, 19 Sep 2011 04:42:52 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Chrome]]></category>
		<category><![CDATA[How to]]></category>
		<category><![CDATA[Web Design -Dev]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1983</guid>
		<description><![CDATA[Tired of Google Chrome cacheing resources while you are trying to build a web app or site? Here is how you can disable the Google Chrome cache: open developer console click settings gear in bottom right check &#8220;Disable cache&#8221; under Network heading This is as of version 14]]></description>
			<content:encoded><![CDATA[<p>Tired of Google Chrome cacheing resources while you are trying to build a web app or site?</p>
<p>Here is how you can disable the Google Chrome cache:</p>
<ul>
<li>open developer console</li>
<li>click settings gear in bottom right</li>
<li>check &#8220;Disable cache&#8221; under Network heading</li>
</ul>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/google-chrame-disable-cache.jpg" alt="How to disable Google Chrome cache" /></p>
<p>This is as of version 14</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/09/disable-google-chrome-cache/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Delete Data From Graphite</title>
		<link>http://geek.michaelgrace.org/2011/09/delete-data-from-graphite/</link>
		<comments>http://geek.michaelgrace.org/2011/09/delete-data-from-graphite/#comments</comments>
		<pubDate>Tue, 13 Sep 2011 16:29:13 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Web Design -Dev]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1972</guid>
		<description><![CDATA[If you have set up a Graphite server and played with it like I have, you have some data in there cluttering up your interface. You can get rid of any of the data or folders by deleting them from the server. The data is stored in files found starting at /opt/graphite/storage/whisper/ Happy deleting!]]></description>
			<content:encoded><![CDATA[<p>If you have set up a Graphite server and played with it like I have, you have some data in there cluttering up your interface. </p>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/graphite-resource-tree.png" alt="graphite resource tree" /></p>
<p>You can get rid of any of the data or folders by deleting them from the server. The data is stored in files found starting at</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>graphite<span style="color: #000000; font-weight: bold;">/</span>storage<span style="color: #000000; font-weight: bold;">/</span>whisper<span style="color: #000000; font-weight: bold;">/</span></pre></div></div>

<p>Happy deleting!</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/09/delete-data-from-graphite/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cross Browser Testing For All Versions Of IE (Internet Explorer)</title>
		<link>http://geek.michaelgrace.org/2011/09/cross-browser-testing-for-all-versions-of-ie-internet-explorer/</link>
		<comments>http://geek.michaelgrace.org/2011/09/cross-browser-testing-for-all-versions-of-ie-internet-explorer/#comments</comments>
		<pubDate>Tue, 13 Sep 2011 15:53:09 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Web Design -Dev]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1966</guid>
		<description><![CDATA[Ever had the urge to test your site or your client&#8217;s site on all versions of IE? Me either! Introducing IE Collection. You can download the .exe that will install all the versions of IE that are compatible with your version of windows all the way back to IE 1! So whether your are feeling [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/ie1.5.png" alt="IE 1.5" /></p>
<p>Ever had the urge to test your site or your client&#8217;s site on all versions of IE? Me either! Introducing <a href="http://utilu.com/IECollection/">IE Collection</a>. You can download the .exe that will install all the versions of IE that are compatible with your version of windows all the way back to IE 1! So whether your are feeling nostalgic or just need to get some testing done, download it from <a href="http://fileforum.betanews.com/detail/Internet-Explorer-Collection/1217189605/1">FileForum</a> or <a href="http://www.softpedia.com/get/Internet/Browsers/Internet-Explorer-Collection.shtml">Softpedia</a></p>
<p>To celebrate this blog post on this year&#8217;s <a href="http://en.wikipedia.org/wiki/Programmers'_Day">Programmer&#8217;s Day</a>, here is a this blog post as seen through IE 2&#8242;s eyes. How meta ; )<br />
<img src="http://mikegrace.s3.amazonaws.com/geek-blog/blog-post-in-ie-2.png" alt="blog post rendered in IE 2" /></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/09/cross-browser-testing-for-all-versions-of-ie-internet-explorer/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Rhino and Envjs</title>
		<link>http://geek.michaelgrace.org/2011/09/rhino-and-envjs/</link>
		<comments>http://geek.michaelgrace.org/2011/09/rhino-and-envjs/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 20:56:11 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web Design -Dev]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1947</guid>
		<description><![CDATA[Rhino is an open source implementation of JavaScript in Java and envjs is a simulated browser environment written in javascript. So what does all this mean? It means that you can load up a web page and execute the loaded page&#8217;s JavaScript in a browser simulated environment all without a browser! Let me demonstrate. From [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mozilla.org/rhino/">Rhino</a> is an open source implementation of JavaScript in Java and <a href="http://www.envjs.com/">envjs</a> is a simulated browser environment written in javascript. So what does all this mean? It means that you can load up a web page and execute the loaded page&#8217;s JavaScript in a browser simulated environment all without a browser! Let me demonstrate.</p>
<p>From the <a href="https://developer.mozilla.org/en/Rhino_downloads_archive">Rhino downloads page</a> I downloaded <a href="ftp://ftp.mozilla.org/pub/mozilla.org/js/rhino1_7R2.zip">rhino1_7R2.zip</a> since <span style="text-decoration: underline;"><strong>R3 doesn&#8217;t work with Envjs at the time of this post.</strong></span></p>
<p>I also downloaded the latest <a href="http://www.envjs.com/">Envjs</a> and placed it in the same location as the unzipped rhino folder.</p>
<p>Navigate in a terminal to the location of the unziped rhino folder and start up rhino.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">java <span style="color: #660033;">-jar</span> js.jar</pre></div></div>

<p>Then you will want to load the Envjs JavaScript that will emulate the browser environment. (location is relative to where the jar file is running from)</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">load<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">&quot;../env.rhino.js&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

<p>Then I tell Envjs to load external scripts found in the page. This is required because scripts running in Rhino with Envjs will have file system access.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">Envjs.<span style="color: #660066;">scriptTypes</span><span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'text/javascript'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span></pre></div></div>

<p>Then we navigate our emulated browser to the test page that I built.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">window.<span style="color: #660066;">location</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;http://mikegrace.s3.amazonaws.com/geek-blog/rhino-envjs.html&quot;</span></pre></div></div>

<p>The test page that I built looks like this when you load it in a browser with JavaScript disabled</p>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/rhino-envjs-test-page-js-disabled.png" alt="" /></p>
<p>This is because the page content is built using jQuery</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;">Rhino and Envjs Test<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">charset</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;utf-8&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;</span>// <span style="color: #009900;">&lt;!<span style="color: #66cc66;">&#91;</span>CDATA<span style="color: #66cc66;">&#91;</span></span>
<span style="color: #009900;">    $<span style="color: #66cc66;">&#40;</span>document<span style="color: #66cc66;">&#41;</span>.ready<span style="color: #66cc66;">&#40;</span>function<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></span>
<span style="color: #009900;">      $<span style="color: #66cc66;">&#40;</span>document.body<span style="color: #66cc66;">&#41;</span></span>
<span style="color: #009900;">        .append<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;</span>
&nbsp;
<span style="color: #009900;">&lt;h1&gt;</span></span>Header of the highest order<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h1</span>&gt;</span>
&nbsp;
&quot;)
        .append(&quot;
&nbsp;
Question: What is the answer?
&nbsp;
&quot;)
        .append(&quot;<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">code</span>&gt;</span>42<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">code</span>&gt;</span>&quot;);
    });
&nbsp;
// ]]&gt;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></pre></div></div>

<p>Because Envjs will emulate a browser, we will be able to work with the page in Rhino like we would in a browser.</p>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/rhino-envjs-test-page-js-enabled.png" alt="" /></p>
<p>Getting the paragraph text is as easy as running some jQuery in the Rhino console</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;p&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">text</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Awesome!</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">rhino1_7R2 mgrace$ java <span style="color: #660033;">-jar</span> js.jar
Rhino <span style="color: #000000;">1.7</span> release <span style="color: #000000;">2</span> <span style="color: #000000;">2009</span> 03 <span style="color: #000000;">22</span>
js<span style="color: #000000; font-weight: bold;">&amp;</span>gt; load<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">&quot;../env.rhino.js&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  Envjs<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1.6</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>Rhino; U; Mac OS X x86_64 10.6.8; en-US; rv:1.7.0.rc2<span style="color: #7a0874; font-weight: bold;">&#41;</span> Resig<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">20070309</span> PilotFish<span style="color: #000000; font-weight: bold;">/</span>1.2.13  <span style="color: #7a0874; font-weight: bold;">&#93;</span>
js<span style="color: #000000; font-weight: bold;">&amp;</span>gt; Envjs.scriptTypes<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">'text/javascript'</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> = <span style="color: #c20cb9; font-weight: bold;">true</span>;
<span style="color: #c20cb9; font-weight: bold;">true</span>
js<span style="color: #000000; font-weight: bold;">&amp;</span>gt; window.location = <span style="color: #ff0000;">&quot;http://mikegrace.s3.amazonaws.com/geek-blog/rhino-envjs.html&quot;</span>
http:<span style="color: #000000; font-weight: bold;">//</span>mikegrace.s3.amazonaws.com<span style="color: #000000; font-weight: bold;">/</span>geek-blog<span style="color: #000000; font-weight: bold;">/</span>rhino-envjs.html
js<span style="color: #000000; font-weight: bold;">&amp;</span>gt; jQuery<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">&quot;p&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>.text<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
Question: What is the answer?
js<span style="color: #000000; font-weight: bold;">&amp;</span>gt; jQuery<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">&quot;code&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>.text<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
<span style="color: #000000;">42</span></pre></div></div>

<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/running-rhino-envjs-from-console.png" alt="" /></p>
<p>If you are looking to debug your scripts in Rhino a bit better, you can launch the rhino console in the Rhino JavaScript Debugger using a command similar to this</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">java <span style="color: #660033;">-cp</span> js.jar org.mozilla.javascript.tools.debugger.Main</pre></div></div>

<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/rhino-javascript-debugger.png" alt="rhino javascript debugger" /></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/09/rhino-and-envjs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing statsd on Ubuntu Server 10.04</title>
		<link>http://geek.michaelgrace.org/2011/09/installing-statsd-on-ubuntu-server-10-04/</link>
		<comments>http://geek.michaelgrace.org/2011/09/installing-statsd-on-ubuntu-server-10-04/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 01:42:22 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Web Design -Dev]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1939</guid>
		<description><![CDATA[Installing StatsD on an Ubuntu server (10.04) was surprisingly easy. Here are the steps that I took. These will work from a fresh install of Ubuntu server 10.04 or after having installed and started graphite. # INSTALL NODE.JS sudo apt-get update sudo apt-get upgrade sudo apt-get install python-software-properties git-core sudo add-apt-repository ppa:chris-lea/node.js sudo apt-get update [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/graphite-data-via-statsd.png.png" alt="" /></p>
<p>Installing StatsD on an Ubuntu server (10.04) was surprisingly easy. Here are the steps that I took. These will work from a fresh install of Ubuntu server 10.04 or after having <a href="http://geek.michaelgrace.org/2011/09/how-to-install-graphite-on-ubuntu/">installed and started graphite</a>.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># INSTALL NODE.JS</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> update
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> upgrade
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> python-software-properties git-core
<span style="color: #c20cb9; font-weight: bold;">sudo</span> add-apt-repository ppa:chris-lea<span style="color: #000000; font-weight: bold;">/</span>node.js
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> update
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> nodejs
&nbsp;
<span style="color: #666666; font-style: italic;"># CLONE THE STATSD PROJECT</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> clone https:<span style="color: #000000; font-weight: bold;">//</span>github.com<span style="color: #000000; font-weight: bold;">/</span>etsy<span style="color: #000000; font-weight: bold;">/</span>statsd.git
&nbsp;
<span style="color: #666666; font-style: italic;"># CREATE A CONFIG FILE</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> statsd
<span style="color: #c20cb9; font-weight: bold;">cp</span> exampleConfig.js dConfig.js
<span style="color: #666666; font-style: italic;"># edit config file your settings</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">vim</span> dConfig.js
node stats.js dConfig.js
&nbsp;
<span style="color: #666666; font-style: italic;"># START STATSD</span>
node stats.js dConfig.js</pre></div></div>

<p>When you start StatsD, it will probably give you a warning like </p>
<blockquote><p>(node) process.compile should not be used. Use require(&#8216;vm&#8217;).runInThisContext instead.</p></blockquote>
<p>but it is still working as expected so you can ignore it.</p>
<p>You can then test to make sure StatsD is working. Edit and run this simple PHP script to throw some stats at your StatsD.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
StatsD<span style="color: #339933;">::</span><span style="color: #004000;">increment</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;testing.increment&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
StatsD<span style="color: #339933;">::</span><span style="color: #004000;">timing</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;testing.timing&quot;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2345</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> StatsD <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> static <span style="color: #000000; font-weight: bold;">function</span> timing<span style="color: #009900;">&#40;</span><span style="color: #000088;">$stat</span><span style="color: #339933;">,</span> <span style="color: #000088;">$time</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sampleRate</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        StatsD<span style="color: #339933;">::</span><span style="color: #004000;">send</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$stat</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$time</span>|ms&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sampleRate</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">public</span> static <span style="color: #000000; font-weight: bold;">function</span> increment<span style="color: #009900;">&#40;</span><span style="color: #000088;">$stats</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sampleRate</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        StatsD<span style="color: #339933;">::</span><span style="color: #004000;">updateStats</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$stats</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sampleRate</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">public</span> static <span style="color: #000000; font-weight: bold;">function</span> decrement<span style="color: #009900;">&#40;</span><span style="color: #000088;">$stats</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sampleRate</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        StatsD<span style="color: #339933;">::</span><span style="color: #004000;">updateStats</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$stats</span><span style="color: #339933;">,</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sampleRate</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">public</span> static <span style="color: #000000; font-weight: bold;">function</span> updateStats<span style="color: #009900;">&#40;</span><span style="color: #000088;">$stats</span><span style="color: #339933;">,</span> <span style="color: #000088;">$delta</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sampleRate</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$stats</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000088;">$stats</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$stats</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
        <span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$stats</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$stat</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$stat</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$delta</span>|c&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        StatsD<span style="color: #339933;">::</span><span style="color: #004000;">send</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sampleRate</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">public</span> static <span style="color: #000000; font-weight: bold;">function</span> send<span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sampleRate</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$sampledData</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$sampleRate</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$stat</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">mt_rand</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">/</span> <span style="color: #990000;">mt_getrandmax</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&lt;=</span> <span style="color: #000088;">$sampleRate</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                    <span style="color: #000088;">$sampledData</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$stat</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$value</span>|@<span style="color: #006699; font-weight: bold;">$sampleRate</span>&quot;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$sampledData</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sampledData</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">return</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
        try <span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$host</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>your graphite host here<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
            <span style="color: #000088;">$port</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>your graphite port here <span style="color: #cc66cc;">8125</span>?<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
            <span style="color: #000088;">$fp</span> <span style="color: #339933;">=</span> <span style="color: #990000;">fsockopen</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;udp://<span style="color: #006699; font-weight: bold;">$host</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$port</span><span style="color: #339933;">,</span> <span style="color: #000088;">$errno</span><span style="color: #339933;">,</span> <span style="color: #000088;">$errstr</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span> <span style="color: #000088;">$fp</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">return</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
            <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$sampledData</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$stat</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #990000;">fwrite</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$stat</span>:<span style="color: #006699; font-weight: bold;">$value</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
            <span style="color: #990000;">fclose</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> catch <span style="color: #009900;">&#40;</span>Exception <span style="color: #000088;">$e</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Be sure to edit the $host and $port settings towards the bottom with the appropriate graphite settings.</p>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/statsd-graphite-graph.png" alt="" /></p>
<p>When you run this script, you can run a tcpdump on the receiving machine to see if the UDP packets are getting to the machine.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> tcpdump <span style="color: #660033;">-tn</span> port <span style="color: #000000;">8125</span></pre></div></div>

<p>If your StatsD is installed on a different machine/IP than Graphite, you can also watch StatsD send of the data by running</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> tcpdump <span style="color: #660033;">-tn</span> port <span style="color: #000000;">8125</span> or port <span style="color: #000000;">2003</span></pre></div></div>

<p>This is especially helpful if you have not properly set up your Amazon EC2 security group settings. Be sure to open a UDP port for the traffic coming through.</p>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/ec2-security-group-for-statsd.png" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/09/installing-statsd-on-ubuntu-server-10-04/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How-to Install Graphite on Ubuntu</title>
		<link>http://geek.michaelgrace.org/2011/09/how-to-install-graphite-on-ubuntu/</link>
		<comments>http://geek.michaelgrace.org/2011/09/how-to-install-graphite-on-ubuntu/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 00:01:33 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Web Design -Dev]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1921</guid>
		<description><![CDATA[UPDATED TO WORK WITH GRAPHITE 0.9.9!!! (10/13/2011) The new release of Graphite 0.9.9 includes an experimental Flot JavaScript graph. Awesome! Steps to installing Graphite on Ubuntu -> gist.github.com Ubuntu Graphite install screencast -> youtube.com  If you are looking for a how-to on graphite one (CAD) or statsd this is not the place. A few months [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/graphite.png" alt="" /></p>
<p><strong>UPDATED TO WORK WITH GRAPHITE 0.9.9!!! (10/13/2011)</strong></p>
<p>The new release of Graphite 0.9.9 includes an experimental Flot JavaScript graph. Awesome!</p>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/flot-in-graphite.png" alt="" /></p>
<p>Steps to installing Graphite on Ubuntu -> <a href="https://gist.github.com/1191574">gist.github.com</a><br />
Ubuntu Graphite install screencast -> <a href="http://www.youtube.com/watch?v=o5yLgzsQqU0">youtube.com</a></p>
<p><em> If you are looking for a how-to on <a href="http://www.graphiteone-cad.com/page_home.php">graphite one</a> (CAD) or <a href="https://github.com/etsy/statsd">statsd</a> this is not the place.</em></p>
<p>A few months ago I blogged abou <a href="http://geek.michaelgrace.org/2011/02/closet-stats-junkie/">how much I love stats</a>. One of the things that I shared in that post was a blog post done by the etsy developer team about <a href="http://codeascraft.etsy.com/2011/02/15/measure-anything-measure-everything/">statsd and graphite to track everything</a>.</p>
<p>This week I was able to get graphite setup on a dedicated Ubuntu 10.04 on my Mac using VMware Fusion. I thought I would share the steps I took so others might be able to save some time in their setup. In setting up apache I just copied over the default virtual host settings since graphite will be the only thing running on the server. If you are planning on having multiple virtual hosts on the machine then you will want to configure the virtual hosts differently.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">####################################</span>
<span style="color: #666666; font-style: italic;"># BASIC REQUIREMENTS</span>
<span style="color: #666666; font-style: italic;"># http://graphite.wikidot.com/installation</span>
<span style="color: #666666; font-style: italic;"># http://geek.michaelgrace.org/2011/09/how-to-install-graphite-on-ubuntu/</span>
<span style="color: #666666; font-style: italic;"># Last tested &amp; updated 10/13/2011</span>
<span style="color: #666666; font-style: italic;">####################################</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> update
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> upgrade
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>launchpad.net<span style="color: #000000; font-weight: bold;">/</span>graphite<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0.9</span><span style="color: #000000; font-weight: bold;">/</span>0.9.9<span style="color: #000000; font-weight: bold;">/</span>+download<span style="color: #000000; font-weight: bold;">/</span>graphite-web-0.9.9.tar.gz
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>launchpad.net<span style="color: #000000; font-weight: bold;">/</span>graphite<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0.9</span><span style="color: #000000; font-weight: bold;">/</span>0.9.9<span style="color: #000000; font-weight: bold;">/</span>+download<span style="color: #000000; font-weight: bold;">/</span>carbon-0.9.9.tar.gz
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>launchpad.net<span style="color: #000000; font-weight: bold;">/</span>graphite<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0.9</span><span style="color: #000000; font-weight: bold;">/</span>0.9.9<span style="color: #000000; font-weight: bold;">/</span>+download<span style="color: #000000; font-weight: bold;">/</span>whisper-0.9.9.tar.gz
<span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-zxvf</span> graphite-web-0.9.9.tar.gz
<span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-zxvf</span> carbon-0.9.9.tar.gz
<span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-zxvf</span> whisper-0.9.9.tar.gz
<span style="color: #c20cb9; font-weight: bold;">mv</span> graphite-web-0.9.9 graphite
<span style="color: #c20cb9; font-weight: bold;">mv</span> carbon-0.9.9 carbon
<span style="color: #c20cb9; font-weight: bold;">mv</span> whisper-0.9.9 whisper
<span style="color: #c20cb9; font-weight: bold;">rm</span> carbon-0.9.9.tar.gz
<span style="color: #c20cb9; font-weight: bold;">rm</span> graphite-web-0.9.9.tar.gz
<span style="color: #c20cb9; font-weight: bold;">rm</span> whisper-0.9.9.tar.gz
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #660033;">--assume-yes</span> apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3 python3.1 libpython3.1 python3.1-minimal libapache2-mod-wsgi libaprutil1-ldap memcached python-cairo-dev python-django python-ldap python-memcache python-pysqlite2 sqlite3 erlang-os-mon erlang-snmp rabbitmq-server bzr expect <span style="color: #c20cb9; font-weight: bold;">ssh</span> libapache2-mod-python python-setuptools
<span style="color: #c20cb9; font-weight: bold;">sudo</span> easy_install django-tagging
&nbsp;
<span style="color: #666666; font-style: italic;">####################################</span>
<span style="color: #666666; font-style: italic;"># INSTALL WHISPER</span>
<span style="color: #666666; font-style: italic;">####################################</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>whisper
<span style="color: #c20cb9; font-weight: bold;">sudo</span> python setup.py <span style="color: #c20cb9; font-weight: bold;">install</span>
&nbsp;
<span style="color: #666666; font-style: italic;">####################################</span>
<span style="color: #666666; font-style: italic;"># INSTALL CARBON</span>
<span style="color: #666666; font-style: italic;">####################################</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>carbon
<span style="color: #c20cb9; font-weight: bold;">sudo</span> python setup.py <span style="color: #c20cb9; font-weight: bold;">install</span>
<span style="color: #666666; font-style: italic;"># CONFIGURE CARBON</span>
<span style="color: #666666; font-style: italic;">####################</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>graphite<span style="color: #000000; font-weight: bold;">/</span>conf
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">cp</span> carbon.conf.example carbon.conf
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">cp</span> storage-schemas.conf.example storage-schemas.conf
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">vim</span> storage-schemas.conf
<span style="color: #666666; font-style: italic;">### edited storage-schemas.conf to be the following</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span>stats<span style="color: #7a0874; font-weight: bold;">&#93;</span>
priority = <span style="color: #000000;">110</span>
pattern = .<span style="color: #000000; font-weight: bold;">*</span>
retentions = <span style="color: #000000;">10</span>:<span style="color: #000000;">2160</span>,<span style="color: #000000;">60</span>:<span style="color: #000000;">10080</span>,<span style="color: #000000;">600</span>:<span style="color: #000000;">262974</span>
<span style="color: #666666; font-style: italic;">###</span>
&nbsp;
<span style="color: #666666; font-style: italic;">####################################</span>
<span style="color: #666666; font-style: italic;"># CONFIGURE GRAPHITE (webapp)</span>
<span style="color: #666666; font-style: italic;">####################################</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>graphite
<span style="color: #c20cb9; font-weight: bold;">sudo</span> python check-dependencies.py
<span style="color: #c20cb9; font-weight: bold;">sudo</span> python setup.py <span style="color: #c20cb9; font-weight: bold;">install</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># CONFIGURE APACHE</span>
<span style="color: #666666; font-style: italic;">###################</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>graphite<span style="color: #000000; font-weight: bold;">/</span>examples
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">cp</span> example-graphite-vhost.conf <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>sites-available<span style="color: #000000; font-weight: bold;">/</span>default
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>graphite<span style="color: #000000; font-weight: bold;">/</span>conf<span style="color: #000000; font-weight: bold;">/</span>graphite.wsgi.example <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>graphite<span style="color: #000000; font-weight: bold;">/</span>conf<span style="color: #000000; font-weight: bold;">/</span>graphite.wsgi
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">vim</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>sites-available<span style="color: #000000; font-weight: bold;">/</span>default
<span style="color: #666666; font-style: italic;"># moved 'WSGIImportScript /opt/gr..' to right before virtual host since it gave me an error saying</span>
<span style="color: #666666; font-style: italic;"># WSGIImportScript cannot occur within &lt;VirtualHost&gt; section</span>
<span style="color: #666666; font-style: italic;"># if this path does not exist make it!!!!!!</span>
<span style="color: #666666; font-style: italic;"># /etc/httpd/wsgi</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>httpd
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>httpd<span style="color: #000000; font-weight: bold;">/</span>wsgi
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>apache2 reload
&nbsp;
<span style="color: #666666; font-style: italic;">####################################</span>
<span style="color: #666666; font-style: italic;"># INITIAL DATABASE CREATION</span>
<span style="color: #666666; font-style: italic;">####################################</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>graphite<span style="color: #000000; font-weight: bold;">/</span>webapp<span style="color: #000000; font-weight: bold;">/</span>graphite<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> python manage.py syncdb
<span style="color: #666666; font-style: italic;"># follow prompts to setup django admin user</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chown</span> <span style="color: #660033;">-R</span> www-data:www-data <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>graphite<span style="color: #000000; font-weight: bold;">/</span>storage<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>apache2 restart
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>graphite<span style="color: #000000; font-weight: bold;">/</span>webapp<span style="color: #000000; font-weight: bold;">/</span>graphite
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">cp</span> local_settings.py.example local_settings.py
&nbsp;
<span style="color: #666666; font-style: italic;">####################################</span>
<span style="color: #666666; font-style: italic;"># START CARBON</span>
<span style="color: #666666; font-style: italic;">####################################</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>graphite<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> .<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>carbon-cache.py start
&nbsp;
<span style="color: #666666; font-style: italic;">####################################</span>
<span style="color: #666666; font-style: italic;"># SEND DATA TO GRAPHITE</span>
<span style="color: #666666; font-style: italic;">####################################</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>graphite<span style="color: #000000; font-weight: bold;">/</span>examples
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chmod</span> +x example-client.py
<span style="color: #666666; font-style: italic;"># [optional] edit example-client.py to report data faster</span>
<span style="color: #666666; font-style: italic;"># sudo vim example-client.py</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> .<span style="color: #000000; font-weight: bold;">/</span>example-client.py</pre></div></div>

<p><object width="500" height="281"><param name="movie" value="http://www.youtube.com/v/o5yLgzsQqU0?version=3&#038;feature=oembed"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/o5yLgzsQqU0?version=3&#038;feature=oembed" type="application/x-shockwave-flash" width="500" height="281" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Original installation instructions -> <a href="http://graphite.wikidot.com/installation">http://graphite.wikidot.com/installation</a></p>
<p>Looking to run an Ubuntu instance on EC2? Check out <a href="http://uec-images.ubuntu.com/releases/10.04/release/">http://uec-images.ubuntu.com/releases/10.04/release/</a></p>
<p>Now you are ready to <a href="http://geek.michaelgrace.org/2011/09/installing-statsd-on-ubuntu-server-10-04/">install StatsD</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/09/how-to-install-graphite-on-ubuntu/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Using LocalTunnel with MAMP Pro</title>
		<link>http://geek.michaelgrace.org/2011/08/using-localtunnel-with-mamp-pro/</link>
		<comments>http://geek.michaelgrace.org/2011/08/using-localtunnel-with-mamp-pro/#comments</comments>
		<pubDate>Tue, 30 Aug 2011 14:25:05 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Mac OS]]></category>
		<category><![CDATA[Web Design -Dev]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1897</guid>
		<description><![CDATA[LocalTunnel Rocks! If you have never used it before, I suggest you check it out as it is an awesome tool. The first time I fired up MAMP Pro and LocalTunnel, I couldn&#8217;t get MAMP to serve up the correct directory. The key is making sure that the localhost host is pointing to the directory [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://progrium.com/localtunnel/">LocalTunnel</a> Rocks! If you have never used it before, I suggest you check it out as it is an awesome tool.</p>
<p>The first time I fired up <a href="http://www.mamp.info/">MAMP Pro</a> and LocalTunnel, I couldn&#8217;t get MAMP to serve up the correct directory. The key is making sure that the localhost host is pointing to the directory you want served up through LocalTunnel. Cheers!</p>
<p><img alt="" src="http://mikegrace.s3.amazonaws.com/geek-blog/localtunnel-with-mamp-pro.jpg" class="alignnone" width="650" height="587" /></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/08/using-localtunnel-with-mamp-pro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xdebug Cachegrind and MAMP on Mac OSX</title>
		<link>http://geek.michaelgrace.org/2011/08/xdebug-cachegrind-and-mamp-on-mac-osx/</link>
		<comments>http://geek.michaelgrace.org/2011/08/xdebug-cachegrind-and-mamp-on-mac-osx/#comments</comments>
		<pubDate>Wed, 10 Aug 2011 19:31:18 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Web Design -Dev]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1856</guid>
		<description><![CDATA[Are you running MAMP on OSX? Want to profile your PHP code with Xdebug? It&#8217;s easy and here are the steps. How to run Xdebug on Mac OSX using MAMP 1 Start MAMP 2 Edit php.ini template file through MAMP to enable the extension. Edit the template file via File -&#62; Edit Template -&#62; PHP [...]]]></description>
			<content:encoded><![CDATA[<p>Are you running MAMP on OSX? Want to profile your PHP code with Xdebug? It&#8217;s easy and here are the steps.</p>
<h3>How to run Xdebug on Mac OSX using MAMP</h3>
<p>1 Start MAMP</p>
<p>2 Edit php.ini template file through MAMP to enable the extension. Edit the template file via File -&gt; Edit Template -&gt; PHP -&gt; PHP [php version you are using] php.ini</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/xdebug-mamp-mac-osx-edit-php-ini.jpg" alt="edit php.ini template for mamp on mac osx" width="650" height="120" /></p>
<p>3 Edit bottom of php.ini template file so that it ends up looking like if you want profile output</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>xdebug<span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #007800;">zend_extension</span>=<span style="color: #ff0000;">&quot;/Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so&quot;</span>
xdebug.profiler_enable = <span style="color: #000000;">1</span>
xdebug.profiler_output_dir = <span style="color: #ff0000;">&quot;/tmp&quot;</span>
; DONT REMOVE: MAMP PRO php5.3.6.ini template compatibility version: <span style="color: #000000;">1</span></pre></div></div>

<p>If you don&#8217;t want profile output and just want xdebug running then use</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>xdebug<span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #007800;">zend_extension</span>=<span style="color: #ff0000;">&quot;/Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so&quot;</span>
xdebug.profiler_enable = <span style="color: #000000;">0</span>
xdebug.profiler_output_dir = <span style="color: #ff0000;">&quot;/tmp&quot;</span>
; DONT REMOVE: MAMP PRO php5.3.6.ini template compatibility version: <span style="color: #000000;">1</span></pre></div></div>

<p>Now when you have errors, if they are sent to standard out, you will see something like this</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/xdebug-mamp-mac-osx-error-view.jpg" alt="" width="611" height="379" /></p>
<p>My php.ini file:</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/xdebug-mamp-mac-osx-php-ini-file.jpg" alt="edited php.ini file to run xdebug on mamp mac osx" width="650" height="420" /></p>
<p>4 Save edited template and close edit window</p>
<p>5 Restart MAMP</p>
<p>6 Open MAMP&#8217;s WebStart page and navigate to PHPInfo tab. Check to make sure that Xdebug is running. Doing a search in the browser window for &#8220;Xdebug&#8221; makes this easy.<br />
<img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/xdebug-mamp-mac-osx-confirm-plugin-running.jpg" alt="confirm xdebug running on mamp on mac osx" width="650" height="317" /></p>
<p>7 If you used the same settings that I have above, when you run PHP code, Xdebug will put the cachegrind.out files in your &#8216;/tmp&#8217; directory. Open your &#8216;/temp&#8217; directory and run one of your PHP files to make sure it is working correctly. You can open the &#8216;/tmp&#8217; directory in finder by opening the terminal and running</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">open <span style="color: #000000; font-weight: bold;">/</span>tmp</pre></div></div>

<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/xdebug-mamp-mac-osx-cachegrind-output-files.jpg" alt="cachegrind.out output in /temp folder for mamp on mac osx" width="650" height="295" /></p>
<p>8 Now you can use any app that understands those cachegrind.out files to view the profile data. Apps like <a href="http://kcachegrind.sf.net/">KCacheGrind</a> (Linux/Windows, KDE), <a href="http://sourceforge.net/projects/wincachegrind">WinCacheGrind</a> (Windows), <a href="http://code.google.com/p/xdebugtoolkit/">xdebugtoolkit</a>, and <a href="http://code.google.com/p/webgrind/">Webgrind</a>.  I went the simple route and used webgrind. Webgrind is a simple web based application that you can run locally on MAMP and it will look for the cachegrind.out files automatically with just one click. Continue for steps on setting up with webgrind.</p>
<p>9 <a href="http://code.google.com/p/webgrind/downloads/list">Download Webgrind</a></p>
<p>10 Setup Webgrind host on MAMP to run Webgrind</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/xdebug-mamp-mac-osx-webgrind-host.jpg" alt="Setup webgrind as host on mamp to process xdebug php profile output" width="650" height="587" /></p>
<p>11 Visit webgrind url setup on your local MAMP installation. Mine was simply webgrind/</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/xdebug-mamp-mac-osx-webgrind-installed.jpg" alt="" width="650" height="317" /></p>
<p>12 If you already have cachegrind output files you should be able to select the file in the &#8220;Auto (newest)&#8221; dropdown or leave it select at Auto and click update which will reveal the profile data</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/xdebug-mamp-mac-osx-file-select.jpg" alt="" width="623" height="90" /></p>
<p>13 Throw a celebratory fist pump</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/xdebug-mamp-mac-osx-webgrind-success.jpg" alt="" width="650" height="360" /></p>
<p>&nbsp;</p>
<p>I think it&#8217;s awesome that the MAMP guys have included Xdebug with their <a href="http://forum.mamp.info/viewtopic.php?t=13799">release of MAMP 2.01</a>. I wrote this blog post because I wanted to be able to profile some of my projects to find areas where they could be improved. After finally figuring it out it was super simple. The problem was that it took me a long time to set up because of all of the incorrect and outdated information on the internet. I hope this makes it easier for others to get setup. If this post becomes outdated please leave a comment or contact me about what needs to be updated.</p>
<p>&#8211; UPDATE &#8211;</p>
<p>I am LOVING Xdebug! Just realized that when you do a var_dump of some variable, Xdebug formats it for you so it&#8217;s actually readable! AMAZING!!!!</p>
<p>Before:</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/php-var-dump-before-xdebug.png" alt="" width="480" height="352" /></p>
<p>After:</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/php-var-dump-after-xdebug.png" alt="" width="480" height="385" /></p>
<p><span style="color: #888888;">Things I searched for to find my answers:</span><br />
<span style="color: #888888;">php profile</span><br />
<span style="color: #888888;">xdebug osx</span><br />
<span style="color: #888888;">mamp xdebug</span><br />
<span style="color: #888888;">php xdebug osx</span><br />
<span style="color: #888888;">webgrind</span><br />
<span style="color: #888888;">maccallgrind</span><br />
<span style="color: #888888;">cachegrind osx</span><br />
<span style="color: #888888;">cachegrind</span><br />
<span style="color: #888888;">valgrind</span><br />
<span style="color: #888888;">xdebug mamp</span><br />
<span style="color: #888888;">php.ini add extension mamp </span></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/08/xdebug-cachegrind-and-mamp-on-mac-osx/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Craigslist Inliner Kynetx App Update</title>
		<link>http://geek.michaelgrace.org/2011/07/craigslist-inliner-kynetx-app-update/</link>
		<comments>http://geek.michaelgrace.org/2011/07/craigslist-inliner-kynetx-app-update/#comments</comments>
		<pubDate>Sat, 30 Jul 2011 21:49:21 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Web Design -Dev]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1826</guid>
		<description><![CDATA[Is there a better way to view listings on Craigslist.com? Yes! Is it easy to use? Yes! Today I released an update to my Craigslist inliner Kynetx app that I released some time ago. This new update allows anyone to view a page of craigslist posts by their images. If you have ever thought to [...]]]></description>
			<content:encoded><![CDATA[<p>Is there a better way to view listings on Craigslist.com? Yes! Is it easy to use? Yes!</p>
<p>Today I released an update to my Craigslist inliner Kynetx app that I released some time ago. This new update allows anyone to view a page of craigslist posts by their images. If you have ever thought to yourself that you just want to view all of the images then here is your answer.</p>
<p><a href="http://apps.kynetx.com/installable_apps/4445-Craigslist_Inliner"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/craigslist-inliner-image-view.png" alt="" width="500" height="381" /></a></p>
<p>Install the app by visiting <a href="http://apps.kynetx.com/installable_apps/4445-Craigslist_Inliner">http://apps.kynetx.com/installable_apps/4445-Craigslist_Inliner</a></p>
<p>The other viewing mode, for those who are curious, loads each listing &#8220;inline&#8221; in an i-frame so you can just scroll down through the page to view all of the listings.</p>
<p><a href="http://apps.kynetx.com/installable_apps/4445-Craigslist_Inliner"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/craigslist-inliner-inline-view.png" alt="" width="348" height="500" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/07/craigslist-inliner-kynetx-app-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google+ Filter Kynetx App</title>
		<link>http://geek.michaelgrace.org/2011/07/google-filter-kynetx-app/</link>
		<comments>http://geek.michaelgrace.org/2011/07/google-filter-kynetx-app/#comments</comments>
		<pubDate>Sat, 30 Jul 2011 20:35:00 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Web Design -Dev]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1833</guid>
		<description><![CDATA[I have decided to release my Google+ filter app to the wild today. The app can currently filter out foul language in *posts and comments and also hide animated gifs in the stream. http://apps.kynetx.com/installable_apps/4624-Google+_Filter You can turn the filtering on and off using the controls that will show up on the right side of the Google+ [...]]]></description>
			<content:encoded><![CDATA[<p>I have decided to release my Google+ filter app to the wild today. The app can currently filter out foul language in *posts and comments and also hide animated gifs in the stream. <a href="http://apps.kynetx.com/installable_apps/4624-Google+_Filter">http://apps.kynetx.com/installable_apps/4624-Google+_Filter</a></p>
<p><a href="http://apps.kynetx.com/installable_apps/4624-Google+_Filter"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/gplus-filter-animated-gif.png" alt="" width="600" height="484" /></a></p>
<p>You can turn the filtering on and off using the controls that will show up on the right side of the Google+ interface.</p>
<p><a href="http://apps.kynetx.com/installable_apps/4624-Google+_Filter"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/gplus-filter-controls.png" alt="" width="600" height="467" /></a></p>
<p>Preferences are remembered so the next time you come back it&#8217;s just the way you left it. I plan on adding a feature in the future to be able to collapse posts if they match a list of keywords that you list. I personally really look forward to this feature so I can filter out what ever I want. If you have ideas or suggestions for this app or a new app please let me know.</p>
<p>As seen on Tom Anderson&#8217;s G+ profile!</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/tom-anderson-recommends-google%2B-filter.png" alt="" width="703" height="487" /></p>
<p>Featured on <a href="http://mormonlifehacker.com/2011/07/google-for-mormons-lds-ways-use-google-plus-guide.html">mormonlifehacker.com</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/07/google-filter-kynetx-app/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Webkit Search Input Styling</title>
		<link>http://geek.michaelgrace.org/2011/06/webkit-search-input-styling/</link>
		<comments>http://geek.michaelgrace.org/2011/06/webkit-search-input-styling/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 17:22:01 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[How to]]></category>
		<category><![CDATA[Web Design -Dev]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1791</guid>
		<description><![CDATA[I recently needed to have a search input look the same on Firefox and Chrome. Chrome does some fancy styling when you use a search type input which is great but sometimes you need it to be the same everywhere. I was able to get it to look the same by employing the following styling: [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/webkit-search-input-styling.png" alt="Default webkit search input styling versus normalized" /><br />
I recently needed to have a search input look the same on Firefox and Chrome. Chrome does some fancy styling when you use a search type input which is great but sometimes you need it to be the same everywhere. I was able to get it to look the same by employing the following styling:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">input<span style="color: #00AA00;">&#91;</span>type<span style="color: #00AA00;">=</span>search<span style="color: #00AA00;">&#93;</span> <span style="color: #00AA00;">&#123;</span>
    -webkit-appearance<span style="color: #00AA00;">:</span>textfield<span style="color: #00AA00;">;</span>
    -webkit-box-sizing<span style="color: #3333ff;">:content-</span>box<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
input<span style="color: #00AA00;">:</span><span style="color: #3333ff;">:-webkit-search-decoration</span><span style="color: #00AA00;">,</span>
input<span style="color: #00AA00;">:</span><span style="color: #3333ff;">:-webkit-search-cancel-button </span><span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>If you are using a webkit based browser you can checkout the live demo at -> <a href="http://mikegrace.s3.amazonaws.com/geek-blog/webkit-search-input-example.html">http://mikegrace.s3.amazonaws.com/geek-blog/webkit-search-input-example.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/06/webkit-search-input-styling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rage Of The Submit Button</title>
		<link>http://geek.michaelgrace.org/2011/03/rage-of-the-submit-button/</link>
		<comments>http://geek.michaelgrace.org/2011/03/rage-of-the-submit-button/#comments</comments>
		<pubDate>Wed, 16 Mar 2011 17:05:39 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1748</guid>
		<description><![CDATA[I just noticed this morning that Facebook got rid of the submit button on comments. Not sure where else they might have also done this but I love it! I like this trend of getting rid of submit buttons. Done right I think it makes interfaces cleaner, simpler, and easier. With mobile devices I still [...]]]></description>
			<content:encoded><![CDATA[<p>I just noticed this morning that Facebook got rid of the submit button on comments. Not sure where else they might have also done this but I love it!</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/facebook-removes-submit-button-on-comments.png" alt="" width="430" height="75" /></p>
<p>I like this trend of getting rid of submit buttons. Done right I think it makes interfaces cleaner, simpler, and easier. With mobile devices I still think it is better to give a submit button on forms but for desktop versions I love this lack of submit buttons. I find it interesting that Google has kept their search button even when Google Instant is enabled.</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/google-instant-search-example.png" alt="" width="396" height="70" /></p>
<p>That&#8217;s all. Just my thoughts on the matter. ; )</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/03/rage-of-the-submit-button/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Product Search User Interface Demo</title>
		<link>http://geek.michaelgrace.org/2011/03/product-search-user-interface-demo/</link>
		<comments>http://geek.michaelgrace.org/2011/03/product-search-user-interface-demo/#comments</comments>
		<pubDate>Tue, 15 Mar 2011 05:53:39 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1742</guid>
		<description><![CDATA[Working with limited space and needing both a basic and advanced search I came up with this design. The search happens automatically much like Google instant search as you type. What I like about the design: large input and &#8220;[Product Search Results]&#8221; in results area lets user know that it is a search and that [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mikegrace.s3.amazonaws.com/geek-blog/sandbox/search-example.html"><img src="http://mikegrace.s3.amazonaws.com/geek-blog/search-demo-ui-screenshot.png" alt="Demo Screenshot" /></a></p>
<p>Working with limited space and needing both a basic and advanced search I came up with <a href="http://mikegrace.s3.amazonaws.com/geek-blog/sandbox/search-example.html">this design</a>. The search happens automatically much like Google instant search as you type. What I like about the design:</p>
<ul>
<li>large input and &#8220;[Product Search Results]&#8221; in results area lets user know that it is a search and that it searches products</li>
<li>The &#8220;basic&#8221; and &#8220;advanced&#8221; buttons are placed in a way that associates them with the search input letting the user know that clicking them will change the type of search being done</li>
<li>Visual separation of search input and search output</li>
<li>No unneeded search button or title to tell the user what it is since it&#8217;s parts and design say what it is.</li>
</ul>
<p>What I am worried about:</p>
<ul>
<li>Some users might not like the lack of a search button (Google still has their search button even with google instant enabled)</li>
<li>Making assumptions where I shouldn&#8217;t have</li>
</ul>
<p>This is just a simple demonstration of what I have come up with and would love your feedback. What do you like about it? What do you hate? How would you do it differently? Let me know in the comments or on Twitter <a href="http://twitter.com/MikeGrace">@MikeGrace</a></p>
<p>Check out the demo now if you haven&#8217;t! -&gt; <a href="http://mikegrace.s3.amazonaws.com/geek-blog/sandbox/search-example.html">http://mikegrace.s3.amazonaws.com/geek-blog/sandbox/search-example.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/03/product-search-user-interface-demo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Super Search Thingy Is Alive!!!</title>
		<link>http://geek.michaelgrace.org/2011/03/super-search-thingy-is-alive/</link>
		<comments>http://geek.michaelgrace.org/2011/03/super-search-thingy-is-alive/#comments</comments>
		<pubDate>Thu, 03 Mar 2011 01:16:29 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Keyboard]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1703</guid>
		<description><![CDATA[With a bit of free time I&#8217;ve had lately being unemployed, I was able to work on this project and finish it. I&#8217;m very happy to have it done and working so well. What is it? It&#8217;s a keyboard activated search tool for a specific website built to act like the application launcher Alfred App [...]]]></description>
			<content:encoded><![CDATA[<p>With a bit of free time I&#8217;ve had lately <a href="http://geek.michaelgrace.org/2011/02/life-at-a-startup/">being unemployed</a>, I was able to work on this project and finish it. I&#8217;m very happy to have it done and working so well.</p>
<h3>What is it?</h3>
<p>It&#8217;s a keyboard activated search tool for a specific website built to act like the application launcher Alfred App and QuickSilver. I went through each page in the Kynetx documentation site and indexed each page by hand. I didn&#8217;t include all pages which I believe makes this a much more powerful search for Kynetx developers. I also assigned key words to each page based on what I thought it should be searchable by. If you have suggestions, let me know because I would love to hear them.</p>
<p>Check out the live demo at <a href="http://supersearcher.michaelgrace.org/">http://supersearcher.michaelgrace.org/</a></p>
<p><a href="http://supersearcher.michaelgrace.org/"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/super-searcher-screenshot.png" alt="" width="500" height="340" /></a></p>
<p>If you like it, you are free to use the code in any way that you like. Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/03/super-search-thingy-is-alive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Navigation Border Experiment</title>
		<link>http://geek.michaelgrace.org/2011/02/css-navigation-border-experiment/</link>
		<comments>http://geek.michaelgrace.org/2011/02/css-navigation-border-experiment/#comments</comments>
		<pubDate>Fri, 18 Feb 2011 01:48:18 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1642</guid>
		<description><![CDATA[I was working on building navigation based on this mockup I enjoyed building the navigation and thought what I came up with was cool enough to share what I did. The JavaScript added is just to simulate changing pages. Example page -&#62; http://mikegrace.s3.amazonaws.com/geek-blog/sandbox/css-nav-border-party.html]]></description>
			<content:encoded><![CDATA[<p>I was working on building navigation based on this mockup</p>
<div class="wp-caption alignnone" style="width: 412px"><img title="Navigation Mockup" src="http://mikegrace.s3.amazonaws.com/geek-blog/sandbox/css-nav-border-party-mockup.png" alt="Navigation Mockup" width="402" height="77" /><p class="wp-caption-text">Navigation Mockup</p></div>
<p>I enjoyed building the navigation and thought what I came up with was cool enough to share what I did. </p>
<p>The JavaScript added is just to simulate changing pages.</p>
<p>Example page -&gt; <a href="http://mikegrace.s3.amazonaws.com/geek-blog/sandbox/css-nav-border-party.html">http://mikegrace.s3.amazonaws.com/geek-blog/sandbox/css-nav-border-party.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/02/css-navigation-border-experiment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to use JavaScript setTimeout function</title>
		<link>http://geek.michaelgrace.org/2010/10/how-to-use-javascript-settimeout-function/</link>
		<comments>http://geek.michaelgrace.org/2010/10/how-to-use-javascript-settimeout-function/#comments</comments>
		<pubDate>Wed, 20 Oct 2010 17:22:07 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Web Design -Dev]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1483</guid>
		<description><![CDATA[If you are wanting to run some JavaScript once after a set time, you should use setTimeout. setTimeout&#40;function&#40;&#41; &#123; // JavaScript code executes here &#125;, 3000&#41; The first parameter of the setTimeout is the JavaScript function that will be executed once the delay is up. The second parameter is the amount of time to delay [...]]]></description>
			<content:encoded><![CDATA[<p>If you are wanting to run some JavaScript once after a set time, you should use setTimeout.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">setTimeout<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// JavaScript code executes here</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">3000</span><span style="color: #009900;">&#41;</span></pre></div></div>

<p>The first parameter of the setTimeout is the JavaScript function that will be executed once the delay is up. The second parameter is the amount of time to delay in milliseconds. </p>
<p>It is possible to pass the setTimeout function a string in the first parameter as the JavaScript to execute but this is a bad idea. Passing the JavaScript as a string means that it must go through eval() to be executed. eval() == evil. It&#8217;s also difficult to pass parameters to a function when using strings that must go through eval(). Passing an anonymous function instead of a string is also easier to read for developers. </p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2010/10/how-to-use-javascript-settimeout-function/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Taking Screenshots In Selenium Using Ruby</title>
		<link>http://geek.michaelgrace.org/2010/10/taking-screenshots-in-selenium-using-ruby/</link>
		<comments>http://geek.michaelgrace.org/2010/10/taking-screenshots-in-selenium-using-ruby/#comments</comments>
		<pubDate>Thu, 14 Oct 2010 02:47:04 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Selenium]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1474</guid>
		<description><![CDATA[I LOVE being able to take screenshots of my Selenium tests as they are running! Here&#8217;s how I take screenshots of my selenium tests running, written in Ruby: Find the variable referencing the selenium driver. Might look something like this: @selenium_driver = Selenium::Client::Driver.new&#40;..... Wait for condition to take screenshot. Example: page.wait_for_element&#40;&#34;//h1&#34;, &#123;:timeout_in_seconds =&#62; 10&#125;&#41; Take [...]]]></description>
			<content:encoded><![CDATA[<p>I LOVE being able to take screenshots of my Selenium tests as they are running!</p>
<p>Here&#8217;s how I take screenshots of my selenium tests running, written in Ruby:</p>
<ul>
<li>Find the variable referencing the selenium driver. Might look something like this:

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#0066ff; font-weight:bold;">@selenium_driver</span> = <span style="color:#6666ff; font-weight:bold;">Selenium::Client::Driver</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>.....</pre></div></div>

</li>
<li>Wait for condition to take screenshot. Example:

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">page.<span style="color:#9900CC;">wait_for_element</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;//h1&quot;</span>, <span style="color:#006600; font-weight:bold;">&#123;</span>:timeout_in_seconds <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006666;">10</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

</li>
<li>Take screenshot. Example:

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#0066ff; font-weight:bold;">@selenium_driver</span>.<span style="color:#9900CC;">capture_entire_page_screenshot</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">expand_path</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">dirname</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF; font-weight:bold;">__FILE__</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">'screenshot1.png'</span>, <span style="color:#996600;">''</span><span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p> or something simpler like:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#0066ff; font-weight:bold;">@selenium_driver</span>.<span style="color:#9900CC;">capture_entire_page_screenshot</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'~/Desktop/screenshot1.png'</span>, <span style="color:#996600;">''</span><span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

</li>
</ul>
<p><a href="http://selenium-client.rubyforge.org/classes/Selenium/Client/GeneratedDriver.html#M000231">Selenium documentation</a> for using the capture screenshot function.</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2010/10/taking-screenshots-in-selenium-using-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Escaping Ruby Strings For Eval In Selenium Tests</title>
		<link>http://geek.michaelgrace.org/2010/10/escaping-ruby-strings-for-eval-in-selenium-tests/</link>
		<comments>http://geek.michaelgrace.org/2010/10/escaping-ruby-strings-for-eval-in-selenium-tests/#comments</comments>
		<pubDate>Tue, 12 Oct 2010 00:29:19 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Selenium]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Strings]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1470</guid>
		<description><![CDATA[If you are setting up a string in Ruby to then be used in an eval statement in a Selenium test you&#8217;ll need some escaping fu to be able to pull it off. Quotes in strings that are then going to be put in other Ruby strings need to be tripple escaped. If the string [...]]]></description>
			<content:encoded><![CDATA[<p>If you are setting up a string in Ruby to then be used in an eval statement in a Selenium test you&#8217;ll need some escaping fu to be able to pull it off.</p>
<p>Quotes in strings that are then going to be put in other Ruby strings need to be tripple escaped. If the string is going directly to the eval in Selenium then only a single escape is needed.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">first <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;first quote: <span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\&quot;</span>......&quot;</span>
second <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;#{first} second quote: <span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\&quot;</span>..........&quot;</span>
jsfunction <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;window.alert(<span style="color: #000099; font-weight: bold;">\&quot;</span>#{second}<span style="color: #000099; font-weight: bold;">\&quot;</span>)&quot;</span>
puts jsfunction
&nbsp;
it <span style="color: #3366CC;">&quot;should alert string&quot;</span> <span style="color: #000066; font-weight: bold;">do</span>
  page.<span style="color: #660066;">js_eval</span><span style="color: #009900;">&#40;</span>jsfunction<span style="color: #009900;">&#41;</span>
end</pre></div></div>

<p><img src="https://mikegrace.s3.amazonaws.com/geek-blog/selenuin-ruby-string-escaping.png" alt="selenuim ruby string escaping for eval" /></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2010/10/escaping-ruby-strings-for-eval-in-selenium-tests/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to get jQuery elements from an array of selectors</title>
		<link>http://geek.michaelgrace.org/2010/08/how-to-get-jquery-elements-from-an-array-of-selectors/</link>
		<comments>http://geek.michaelgrace.org/2010/08/how-to-get-jquery-elements-from-an-array-of-selectors/#comments</comments>
		<pubDate>Fri, 27 Aug 2010 03:29:55 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1460</guid>
		<description><![CDATA[To use an array of strings as jQuery selectors I have found the need to append an empty string. My bad example works because it coerces the &#8216;this&#8217; object to a string. Bad Example: array = &#91;&#34;h1&#34;,&#34;p&#34;,&#34;div&#34;&#93;; $K&#40;array&#41;.each&#40;function&#40;&#41; &#123; console.warn&#40; $K&#40;this+&#34;&#34;&#41;.children&#40;&#41; &#41;; &#125;&#41;; Much Better Example: array = &#91;&#34;h1&#34;,&#34;p&#34;,&#34;div&#34;&#93;; $K&#40;array&#41;.each&#40;function&#40;index, value&#41; &#123; console.warn&#40; $K&#40;value&#41;.children&#40;&#41; &#41;; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/lanchongzi/3421470726/"><img alt="" src="https://mikegrace.s3.amazonaws.com/geek-blog/buckets.jpg" class="alignnone" width="240" height="160" /></a><br/><br />
<del datetime="2010-08-27T04:17:45+00:00">To use an array of strings as jQuery selectors I have found the need to append an empty string.</del><br />
My bad example works because it coerces the &#8216;this&#8217; object to a string.</p>
<p>Bad Example:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">array <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #3366CC;">&quot;h1&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;p&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;div&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
$K<span style="color: #009900;">&#40;</span>array<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    console.<span style="color: #660066;">warn</span><span style="color: #009900;">&#40;</span> $K<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">children</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Much Better Example:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">array <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #3366CC;">&quot;h1&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;p&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;div&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
$K<span style="color: #009900;">&#40;</span>array<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>index<span style="color: #339933;">,</span> value<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    console.<span style="color: #660066;">warn</span><span style="color: #009900;">&#40;</span> $K<span style="color: #009900;">&#40;</span>value<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">children</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>I had previously tried the following with out success</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">array <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #3366CC;">&quot;h1&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;p&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;div&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
$K<span style="color: #009900;">&#40;</span>array<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    console.<span style="color: #660066;">warn</span><span style="color: #009900;">&#40;</span> $K<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">children</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><del datetime="2010-08-27T04:17:45+00:00">The problem of what I was originally trying was that each item in the array wasn&#8217;t being treated as a string, I think.</del>The problem of what I was originally trying was that &#8216;this&#8217; is an object and not a string like I need for the jQuery selector. </p>
<p>A big thanks goes out to my friends,<a href="https://twitter.com/alexkolson">Alex Olson</a> &#038; <a href="http://twitter.com/telegramsam">Sam Curren</a>, for helping me understand my mistake while being tired. </p>
<p>If I didn&#8217;t need to do something different for each time through the loop I could do something like this <a href="http://stackoverflow.com/questions/1002073/an-array-of-strings-as-a-jquery-selector">stack overflow answer:</a></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">array <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #3366CC;">&quot;h1&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;p&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;div&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
console.<span style="color: #660066;">warn</span><span style="color: #009900;">&#40;</span> $K<span style="color: #009900;">&#40;</span> array.<span style="color: #660066;">join</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;, &quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>.<span style="color: #660066;">children</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2010/08/how-to-get-jquery-elements-from-an-array-of-selectors/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>IE content not scrolling in overflow container</title>
		<link>http://geek.michaelgrace.org/2010/08/ie-content-not-scrolling-in-overflow-container/</link>
		<comments>http://geek.michaelgrace.org/2010/08/ie-content-not-scrolling-in-overflow-container/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 08:53:05 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[How to]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1454</guid>
		<description><![CDATA[If you have some content in a container and the content isn&#8217;t scrolling, there is probably an easy fix. If any of the content inside the container that is position relative, the container must also be position relative. Doesn&#8217;t work in IE &#60;div id=&#34;scroller&#34; style=&#34;overflow-y:scroll&#34;&#62; &#60;p style=&#34;position:relative&#34;&#62;Lorem ipsum dolor sit amet, consectetur&#60;/p&#62; &#60;p style=&#34;position:relative&#34;&#62;Lorem ipsum [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignnone" style="width: 194px"><a href="http://www.flickr.com/photos/ektogamat/3097557335/"><img title="IE content not scrolling bug" src="https://mikegrace.s3.amazonaws.com/geek-blog/scroll-bug.jpg" alt="IE content not scrolling bug" width="184" height="240" /></a><p class="wp-caption-text">IE content not scrolling bug</p></div>
<p>If you have some content in a container and the content isn&#8217;t scrolling, there is probably an easy fix. If any of the content inside the container that is position relative, the container must also be position relative.</p>
<p>Doesn&#8217;t work in IE</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;scroller&quot;</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;overflow-y:scroll&quot;</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;position:relative&quot;</span>&gt;</span>Lorem ipsum dolor sit amet, consectetur<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;position:relative&quot;</span>&gt;</span>Lorem ipsum dolor sit amet, consectetur<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;position:relative&quot;</span>&gt;</span>Lorem ipsum dolor sit amet, consectetur<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;position:relative&quot;</span>&gt;</span>Lorem ipsum dolor sit amet, consectetur<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;position:relative&quot;</span>&gt;</span>Lorem ipsum dolor sit amet, consectetur<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;position:relative&quot;</span>&gt;</span>Lorem ipsum dolor sit amet, consectetur<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div>

<p>Works in IE</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;scroller&quot;</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;overflow-y:scroll;position:relative&quot;</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;position:relative&quot;</span>&gt;</span>Lorem ipsum dolor sit amet, consectetur<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;position:relative&quot;</span>&gt;</span>Lorem ipsum dolor sit amet, consectetur<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;position:relative&quot;</span>&gt;</span>Lorem ipsum dolor sit amet, consectetur<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;position:relative&quot;</span>&gt;</span>Lorem ipsum dolor sit amet, consectetur<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;position:relative&quot;</span>&gt;</span>Lorem ipsum dolor sit amet, consectetur<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;position:relative&quot;</span>&gt;</span>Lorem ipsum dolor sit amet, consectetur<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div>

<p>Photo by <a href="http://www.flickr.com/photos/ektogamat/3097557335/">Anderson Mancini</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2010/08/ie-content-not-scrolling-in-overflow-container/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ie error expected identifier string or number</title>
		<link>http://geek.michaelgrace.org/2010/08/ie-error-expected-identifier-string-or-number/</link>
		<comments>http://geek.michaelgrace.org/2010/08/ie-error-expected-identifier-string-or-number/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 05:20:55 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[Error]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1449</guid>
		<description><![CDATA[IE 7 was throwing an error while working on some JavaScript ie error expected identifier string or number The problem was that I had an extra comma in a hash this.css&#40;&#123; &#34;position&#34;:&#34;fixed&#34;, &#34;top&#34;: &#40; $K&#40;window&#41;.height&#40;&#41; - this.height&#40;&#41; &#41; / 2 + &#34;px&#34;, &#34;left&#34;: &#40; $K&#40;window&#41;.width&#40;&#41; - this.width&#40;&#41; &#41; / 2 + &#34;px&#34;, &#125;&#41;; It should [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignnone" style="width: 184px"><a href="http://www.flickr.com/photos/stealingsand/4543877957/"><img title="ie error expected identifier string or number" src="https://mikegrace.s3.amazonaws.com/geek-blog/comma.jpg" alt="ie error expected identifier string or number" width="174" height="240" /></a><p class="wp-caption-text">ie error expected identifier string or number</p></div>
<p>IE 7 was throwing an error while working on some JavaScript</p>
<blockquote><p>ie error expected identifier string or number</p></blockquote>
<p>The problem was that I had an extra comma in a hash</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #3366CC;">&quot;position&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;fixed&quot;</span><span style="color: #339933;">,</span>
      <span style="color: #3366CC;">&quot;top&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span> $K<span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">height</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">height</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">/</span> <span style="color: #CC0000;">2</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;px&quot;</span><span style="color: #339933;">,</span>
      <span style="color: #3366CC;">&quot;left&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span> $K<span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">width</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">width</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">/</span> <span style="color: #CC0000;">2</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;px&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>It should have been</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #3366CC;">&quot;position&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;fixed&quot;</span><span style="color: #339933;">,</span>
      <span style="color: #3366CC;">&quot;top&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span> $K<span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">height</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">height</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">/</span> <span style="color: #CC0000;">2</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;px&quot;</span><span style="color: #339933;">,</span>
      <span style="color: #3366CC;">&quot;left&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span> $K<span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">width</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">width</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">/</span> <span style="color: #CC0000;">2</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;px&quot;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Photo: By <a href="http://www.flickr.com/photos/stealingsand/4543877957/">stealingsand</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2010/08/ie-error-expected-identifier-string-or-number/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting into jQuery</title>
		<link>http://geek.michaelgrace.org/2010/07/getting-into-jquery/</link>
		<comments>http://geek.michaelgrace.org/2010/07/getting-into-jquery/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 14:11:45 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[How to]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1427</guid>
		<description><![CDATA[I have a friend that is wanting to get into learning and using jQuery so I thought that I would throw some information together to help them get started. Documentation Love jQuery&#8217;s documentation! I love being able to go to http://api.jquery.com/ and being able to quickly search for what I am looking for. This is [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a title="Swiss Army Knife Cadet 1 by Quality &amp;amp; Style, on Flickr" href="http://www.flickr.com/photos/qualityandstyle/4567136254/"><img src="http://farm5.static.flickr.com/4038/4567136254_9c64cd1f54.jpg" alt="Swiss Army Knife Cadet 1" width="500" height="287" /></a></p>
<div style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; font: normal normal normal 13px/19px Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-family: Times; line-height: normal; font-size: small; padding: 0.6em; margin: 0px;">
<p>I have a friend that is wanting to get into learning and using jQuery so I thought that I would throw some information together to help them get started.</p>
<h2 style="font-size: 1.5em;">Documentation</h2>
<p>Love jQuery&#8217;s documentation! I love being able to go to <a href="http://api.jquery.com/">http://api.jquery.com/</a> and being able to quickly search for what I am looking for. This is great for when I know roughly what I want and just need a bit of information on how to do it. When I was starting out, the documentation main page was the place to be <a href="http://docs.jquery.com/">http://docs.jquery.com/</a></p>
<h2 style="font-size: 1.5em;">Including jQuery into projects</h2>
<p>So you can download the jQuery code from the site and put it up on S3 or your own hosting service and include it into your projects that you are working on but why not let Google do it for you if it makes life easier? Google has a bunch of script libraries that they host for free that are used commonly. To include jQuery in your project stress free try this<br />
<img src="https://mikegrace.s3.amazonaws.com/geek-blog/jquery-example-1/google-jquery.png" alt="" width="660" height="24" /></p>
<h2 style="font-size: 1.5em;">Document Ready</h2>
<p>One thing that can be frustrating when just starting out using jQuery is finding out the hard way of why you have to wait for the page to load before your functions can work. What??!! jQuery is a JavaScript library that extends native functionality of JavaScript and just plain makes JavaScript easier to work with. Problem is, none of your jQuery functions will work until the library is completely loaded and the structure of the html is in the browser. You can make sure your jQuery functions don&#8217;t try to do anything until the page is ready by putting your code in a document read wrapper that jQuery makes easy.</p>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace;" lang="html">$(document).ready(function() {
  // Your jQuery code goes here
});</pre>
<h2 style="font-size: 1.5em;"></h2>
<h2 style="font-size: 1.5em;">Shortcut</h2>
<p>Because using jQuery is soo awesome and you are going to be using it soo much, the shortcut &#8216;$&#8217; was used to reference jQuery. So the following two jQuery functions are the same.</p>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace;" lang="html">jQuery("#ajax img").hide();
$("#ajax img").hide();</pre>
<h2 style="font-size: 1.5em;"></h2>
<h2 style="font-size: 1.5em;">Help</h2>
<p>Just remember when you get frustrated or you need help understanding something with jQuery do a Google search for what your having trouble with. If that doesn&#8217;t get you what you are looking for, ask a friend! There are many who have loved using jQuery and would love to help a friend out. Also, don&#8217;t forget the ever awesome <a href="http://stackoverflow.com/ ">http://stackoverflow.com/ </a>which is a great place to find, ask, and answer programming related stuff! jQuery included.</p>
<h2>Example</h2>
<p>Here is a full and simple working example that I created just to show off a bit of the fun power of jQuery. Again, jQuery documentation rocks and has many examples but I thought this would be nice to pull together everything I had talked about here.</p>
<p><a href="https://mikegrace.s3.amazonaws.com/geek-blog/jquery-example-1/jquery-example-1.html">https://mikegrace.s3.amazonaws.com/geek-blog/jquery-example-1/jquery-example-1.html</a></p>
<p>photo by <a href="http://www.flickr.com/photos/qualityandstyle/4567136254/">Quality &amp; Style</a></div>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2010/07/getting-into-jquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Create HTML link That Starts A Skype Call</title>
		<link>http://geek.michaelgrace.org/2010/03/create-html-link-that-starts-a-skype-call/</link>
		<comments>http://geek.michaelgrace.org/2010/03/create-html-link-that-starts-a-skype-call/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 20:35:58 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[skype]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1296</guid>
		<description><![CDATA[To create a link that visitors can click on to call a phone number or skype username follow this syntax. Replace the asterisks with a valid username or number. Phone Number: &#60;a href=&#34;callto://+***********&#34;&#62;Link will initiate Skype to call my number!&#60;/a&#62; Skype Username: &#60;a href=&#34;skype:********?call&#34;&#62;Link will initiate Skype to call my Skype username!&#60;/a&#62;]]></description>
			<content:encoded><![CDATA[<p><img alt="" src="https://mikegrace.s3.amazonaws.com/geek-blog/skpe-me.png" class="aligncenter" width="600" height="108" /><br />
To create a link that visitors can click on to call a phone number or skype username follow this syntax.<br />
<em>Replace the asterisks with a valid username or number.</em></p>
<h2>Phone Number:</h2>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;callto://+***********&quot;</span>&gt;</span>Link will initiate Skype to call my number!<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span></pre></div></div>

<h2>Skype Username:</h2>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;skype:********?call&quot;</span>&gt;</span>Link will initiate Skype to call my Skype username!<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2010/03/create-html-link-that-starts-a-skype-call/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Access Local Mac Dev Environment from VM</title>
		<link>http://geek.michaelgrace.org/2010/02/access-local-mac-dev-environment-from-vm/</link>
		<comments>http://geek.michaelgrace.org/2010/02/access-local-mac-dev-environment-from-vm/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 20:20:04 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Mac OS]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Safari]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Virtual-Machine]]></category>
		<category><![CDATA[VM]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1268</guid>
		<description><![CDATA[Testing my web development in IE is the bane of my existence. Since I run Apache and MYSQL on my local host on my Mac it was always a trick to view my work though my Windows VM until my friend Mike Farmer showed me an easy way to access my development environment on my Mac from my virtual machine. [...]]]></description>
			<content:encoded><![CDATA[<p>Testing my web development in IE is the bane of my existence. Since I run Apache and MYSQL on my local host on my Mac it was always a trick to view my work though my Windows VM until my friend <a href="http://twitter.com/mikefarmer">Mike Farmer</a> showed me an easy way to access my development environment on my Mac from my virtual machine.</p>
<p>Steps:</p>
<ol>
<li>Get default gateway of VM machine</li>
<li>Use that address the same way you would &#8220;localhost&#8221; on your Mac</li>
</ol>
<p>Example:</p>
<div class="wp-caption alignnone" style="width: 548px"><img title="Get IP address of VM" src="https://geek-blog.s3.amazonaws.com/2010/xp-cmd-ipaddress.jpg" alt="Get IP address of VM" width="538" height="351" /><p class="wp-caption-text">Get IP address of VM</p></div>
<div class="wp-caption alignnone" style="width: 610px"><img class=" " title="Local Mac development environment" src="https://geek-blog.s3.amazonaws.com/2010/mac-local-couchdb-environment.jpg" alt="Local Mac development environment" width="600" height="441" /><p class="wp-caption-text">Local Mac development environment</p></div>
<div class="wp-caption alignnone" style="width: 610px"><img class=" " title="Dev environment from VM" src="https://mikegrace.s3.amazonaws.com/geek-blog/xp-access-mac-dev-environment.jpg" alt="Dev environment from VM" width="600" height="441" /><p class="wp-caption-text">Dev environment from VM</p></div>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2010/02/access-local-mac-dev-environment-from-vm/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using Twitter in KRL (Kynetx Rule Language)</title>
		<link>http://geek.michaelgrace.org/2009/12/using-twitter-in-krl-kynetx-rule-language/</link>
		<comments>http://geek.michaelgrace.org/2009/12/using-twitter-in-krl-kynetx-rule-language/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 17:47:16 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[KRL]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1207</guid>
		<description><![CDATA[I am very excited about the possibilities that this opens up. You can bet that I will be building several applications that use this new feature of Kynetx. Enjoy this how to video by Phil Windley Twitter in Kynetx Rule Language from Phil Windley on Vimeo. Twitter uses OAuth to authorize access to individual data. [...]]]></description>
			<content:encoded><![CDATA[<p>I am very excited about the possibilities that this opens up. You can bet that I will be building several applications that use this new feature of Kynetx. Enjoy this how to video by Phil Windley</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="600" height="435" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=8311960&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="600" height="435" src="http://vimeo.com/moogaloop.swf?clip_id=8311960&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/8311960">Twitter in Kynetx Rule Language</a> from <a href="http://vimeo.com/user2840007">Phil Windley</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>Twitter uses OAuth to authorize access to individual data. This video screencast shows how to use OAuth and Twitter from within the Kynetx Rule Language (KRL).</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2009/12/using-twitter-in-krl-kynetx-rule-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Install 64 bit Ruby On Rails and MySQL on OS X</title>
		<link>http://geek.michaelgrace.org/2009/12/install-64-bit-ruby-on-rails-and-mysql-on-os-x/</link>
		<comments>http://geek.michaelgrace.org/2009/12/install-64-bit-ruby-on-rails-and-mysql-on-os-x/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 11:54:36 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Mac OS]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[compile]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[ROR]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[source]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1197</guid>
		<description><![CDATA[For a project that I am starting I wanted to use Rails and MySQL so I decided to install for source that I compile myself for both. It was amazingly easy and satisfying to have both compiled and installed on my machine for development. Hivelogic has some really simple easy to follow blog posts on [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/piston9/309393133/"><img class="aligncenter size-full wp-image-1198" title="Because it's fast!!" src="http://geek.michaelgrace.org/wp-content/uploads/2009/12/fast_bike.jpg" alt="because it's fast!" width="650" height="172" /></a></p>
<p>For a project that I am starting I wanted to use Rails and MySQL so I decided to install for source that I compile myself for both. It was amazingly easy and satisfying to have both compiled and installed on my machine for development. Hivelogic has some really simple easy to follow blog posts on how to do both. If you are wanting to compile and install either Rails or MySQL on your Mac from source code then I recommend you check them out.</p>
<h2><a href="http://hivelogic.com/articles/compiling-mysql-on-snow-leopard/">Installing MySQL on Snow Leopard</a></h2>
<h2><a href="http://hivelogic.com/articles/compiling-ruby-rubygems-and-rails-on-snow-leopard/">Installing Ruby, RubyGems, and Rails on Snow Leopard</a></h2>
<p><a href="http://geek.michaelgrace.org/wp-content/uploads/2009/12/ruby_on_rails.jpg"><img class="aligncenter size-full wp-image-1205" title="Ruby On Rails" src="http://geek.michaelgrace.org/wp-content/uploads/2009/12/ruby_on_rails.jpg" alt="Ruby On Rails" width="327" height="86" /></a></p>
<p><a rel="cc:attributionURL" href="http://www.flickr.com/photos/piston9/">Bike photo by piston9</a> / <a rel="license" href="http://creativecommons.org/licenses/by/2.0/">CC BY 2.0</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2009/12/install-64-bit-ruby-on-rails-and-mysql-on-os-x/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Thoughts on Personalizing the Web Browsing Experience</title>
		<link>http://geek.michaelgrace.org/2009/12/thoughts-on-personalizing-the-web-browsing-experience/</link>
		<comments>http://geek.michaelgrace.org/2009/12/thoughts-on-personalizing-the-web-browsing-experience/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 09:18:43 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[browsing]]></category>
		<category><![CDATA[Context]]></category>
		<category><![CDATA[context-sensitivity]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1150</guid>
		<description><![CDATA[Dave Kearns of Network World recently wrote an article titled &#8220;Personalizing the Web browsing experience&#8221; where he talked about what he had recently learned from Kynetx and shared his excitement for the future of context sensitivity. I thought it was a good article and wanted to share my thoughts in reply to his article. &#8220;It&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<div id="article_subtitle"><span><a href="http://www.networkworld.com/newsletters/dir/2009/120709id2.html"><img class="alignleft size-full wp-image-1152" title="Network World" src="http://geek.michaelgrace.org/wp-content/uploads/2009/12/networkworld.jpg" alt="Network World" width="200" height="43" /></a>Dave Kearns of </span>Network World recently wrote an article titled &#8220;<a href="http://www.networkworld.com/newsletters/dir/2009/120709id2.html">Personalizing the Web browsing experience</a>&#8221; where he talked about what he had recently learned from Kynetx and shared his excitement for the future of context sensitivity. I thought it was a good article and wanted to share my thoughts in reply to his article.</div>
<p><br/></p>
<div>&#8220;It&#8217;s really exciting to think about all the possibilities there are when you can create applications that act proactively based on contextual information that is available. Because the ability to create a contextually sensitive experience is soo new we are only seeing applications that are scratching the surface. We are in, what I like to call, the &#8220;baby sitting in a highchair throwing Cheerios&#8221; stage. As the concept of building a contextual experience grows and the technology that facilitates that spreads, we will see amazing applications that will blow our minds. The funny thing about all of this is, we will eventually look back on these times and wonder how we ever got stuff done with out context sensitivity.&#8221;</div>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2009/12/thoughts-on-personalizing-the-web-browsing-experience/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Geek and Poke Meets Kynetx</title>
		<link>http://geek.michaelgrace.org/2009/12/geek-and-poke-meets-kynetx/</link>
		<comments>http://geek.michaelgrace.org/2009/12/geek-and-poke-meets-kynetx/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 11:25:10 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Context]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1126</guid>
		<description><![CDATA[One of my co-workers recently tweeted, &#8220;I really want to know how I missed this web comic. Hilarious!! http://bit.ly/7das6F&#8220;. That got me thinking about how much people do miss from their favorite comic sites or any site on the web for that matter. Of course you can subscribe to RSS and get all their updates [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://geekandpoke.typepad.com/"><img class="size-full wp-image-1139 aligncenter" title="Geek and Poke" src="http://geek.michaelgrace.org/wp-content/uploads/2009/12/geekandpoke.jpg" alt="Geek and Poke" width="500" height="125" /></a></p>
<p style="text-align: center;"><a href="http://kynetx.com/"><img class="size-full wp-image-1141 aligncenter" title="kynetx" src="http://geek.michaelgrace.org/wp-content/uploads/2009/12/kynetx.gif" alt="kynetx" width="250" height="80" /></a></p>
<p>One of my co-workers recently tweeted, &#8220;I really want to know how I missed this web comic. Hilarious!! <a href="http://geekandpoke.typepad.com/geekandpoke/2009/12/simply-explained-new-series-the-main-principles-of-software-engineering-part-1.html">http://bit.ly/7das6F</a>&#8220;. That got me thinking about how much people do miss from their favorite comic sites or any site on the web for that matter. Of course you can subscribe to RSS and get all their updates but those who valiantly use and keep up with their feeds know how quickly it can become overwhelming. But what about all of the people who like sites or products but don&#8217;t know how to set up an RSS reader or who just don&#8217;t want to? How do you get your content to those people all the time without them having to type in your URL?</p>
<h1 style="text-align: center;">With Kynetx!!</h1>
<p>With <a href="http://kynetx.com/">Kynetx</a> you can customize the users experience on your website AND ANY OTHER WEBSITE YOU DESIRE!!</p>
<p>Are you getting excited yet? Are you listening or paying attention?! Are you thinking about the possibilities??!!!</p>
<p>In this example, if a user really loves the comic &#8220;<a href="http://geekandpoke.typepad.com/">Geek and Poke</a>&#8221; why not make the content available to them anywhere they go on the web in unobtrusive manner? In fact, if you do it well, the users will be giddy with the results and love your product even more! It&#8217;s a little known secret that people actually like advertising. THEY DO! People love to buy stuff! What people actually hate is irrelevant and irritating ads that are in their faces. I took 3 sites and customized the users experience based on the context that they really enjoy the comic &#8220;Geek and Poke&#8221;.</p>
<ul>
<li>Google.com</li>
<li>CNET.com</li>
<li>CNN.com</li>
</ul>
<p>Here are the after and before photos of what the user will see as they visit these sites.</p>
<div id="attachment_1130" class="wp-caption aligncenter" style="width: 610px"><img class="size-full wp-image-1130" title="Geek and Poke on Google.com" src="http://geek.michaelgrace.org/wp-content/uploads/2009/12/google.jpg" alt="Geek and Poke on Google.com" width="600" height="705" /><p class="wp-caption-text">Geek and Poke on Google.com</p></div>
<div id="attachment_1129" class="wp-caption aligncenter" style="width: 610px"><img class="size-full wp-image-1129" title="Geek and Poke on CNET.com" src="http://geek.michaelgrace.org/wp-content/uploads/2009/12/cnet.jpg" alt="Geek and Poke on CNET.com" width="600" height="705" /><p class="wp-caption-text">Geek and Poke on CNET.com</p></div>
<div id="attachment_1128" class="wp-caption aligncenter" style="width: 610px"><img class="size-full wp-image-1128" title="Geek and Poke on CNN.com using Kynetx technology" src="http://geek.michaelgrace.org/wp-content/uploads/2009/12/cnn.jpg" alt="Geek and Poke on CNN.com using Kynetx technology" width="600" height="705" /><p class="wp-caption-text">Geek and Poke on CNN.com using Kynetx technology</p></div>
<p>All the user has to do is download an Information Card into their Card Selector on their computer!</p>
<p>Check out this presentation by Kynetx to learn a bit more. (Make sure you watch it full screen. It looks much better!)</p>
<div id="__ss_2568833" style="width: 425px; text-align: center;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="Home Page Tour Purpose-centric Web" href="http://www.slideshare.net/knightfour/home-page-tour-purposecentric-web-2568833">Home Page Tour Purpose-centric Web</a><object style="margin:0px" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=homepagetoursimple-091123163037-phpapp01&amp;stripped_title=home-page-tour-purposecentric-web-2568833" /><param name="allowfullscreen" value="true" /><embed style="margin:0px" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=homepagetoursimple-091123163037-phpapp01&amp;stripped_title=home-page-tour-purposecentric-web-2568833" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px; text-align: center;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/knightfour">knightfour</a>.</div>
</div>
<p>If you would like to try it out for yourself, drag this bookmarklet to your bookmarks bar: <a href="javascript:(function(){d=document;s=d.createElement('script');s.text=&quot;KOBJ_config={'rids':['a60x38']};&quot;;d.body.appendChild(s);l=d.createElement('script');l.src=&quot;http://init.kobj.net/js/shared/kobj-static.js&quot;;d.body.appendChild(l);})()">Geek &amp; Poke </a>or click to download the information card below to your card selector.</p>
<p style="text-align: center;">
<div id="attachment_1147" class="wp-caption aligncenter" style="width: 250px"><a href="http://geek.michaelgrace.org/wp-content/uploads/2009/12/Geek+and+Poke.crd"><img class="size-full wp-image-1147 " title="Geek and Poke Information Card" src="http://geek.michaelgrace.org/wp-content/uploads/2009/12/geek-and-poke.jpg" alt="Geek and Poke Information Card" width="240" height="180" /></a><p class="wp-caption-text">Geek and Poke Information Card</p></div>
<p>Just visit any of the three sites with the card installed or click on the bookmarklet while on that page and you to can see the magic happen. ; )</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2009/12/geek-and-poke-meets-kynetx/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Context of a StackOverflow Junkie</title>
		<link>http://geek.michaelgrace.org/2009/11/the-context-of-a-stackoverflow-junkie/</link>
		<comments>http://geek.michaelgrace.org/2009/11/the-context-of-a-stackoverflow-junkie/#comments</comments>
		<pubDate>Sat, 28 Nov 2009 08:14:47 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[context-sensitivity]]></category>
		<category><![CDATA[purpose-centric]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1111</guid>
		<description><![CDATA[I have been having waaaaay to much fun since I got into Kynetx. Many of my friends have been asking me &#8220;what does Kynetx do?&#8221; and &#8220;what is the purpose-centric-context-sensitive web?&#8221;. Well, it takes a bit to explain so I&#8217;ll show you just a small glimpse of what it all means. If you love stackoverflow.com [...]]]></description>
			<content:encoded><![CDATA[<p>I have been having waaaaay to much fun since I got into Kynetx. Many of my friends have been asking me &#8220;what does Kynetx do?&#8221; and &#8220;what is the purpose-centric-context-sensitive web?&#8221;. Well, it takes a bit to explain so I&#8217;ll show you just a small glimpse of what it all means.</p>
<p>If you love stackoverflow.com then you know how helpful it can be when you are looking for answers to your programming questions. Why not, if you are a StackOverflow fanatic, have all of your search results  augmented for what you like? Here is a drop dead easy way to tell your browser, &#8220;Hey! I really like getting search results for Stack Overflow so bring them to my attention.&#8221; Now that is context sensitivity! You can do the same thing for anything you like and it&#8217;s easy but the awesomeness doesn&#8217;t end there! Search result augmentation is just child&#8217;s play compared to what could be done. We are going to be seeing a complete rewrite of the advertising industry as we know it! Now you need to see this in action for yourself. You will need 2 things: 1) a card selector from Azigo 2) the information card for StackOverflow</p>
<div id="attachment_1114" class="wp-caption aligncenter" style="width: 229px"><a href="http://www.azigo.com/getazigo.html"><img class="size-full wp-image-1114 " title="AzigoLite Card Selector" src="http://geek.michaelgrace.org/wp-content/uploads/2009/11/Screen-shot-2009-11-28-at-12.28.55-AM.jpg" alt="Mac AzigoLite Card Selector" width="219" height="93" /></a><p class="wp-caption-text">AzigoLite Card Selector</p></div>
<div id="attachment_1113" class="wp-caption aligncenter" style="width: 250px"><a href="http://kynetx.michaelgrace.org/stackoverflow/StackOverflow+fan.crd"><img class="size-full wp-image-1113  " title="StackOverflow Info card" src="http://geek.michaelgrace.org/wp-content/uploads/2009/11/stackoverflow_infocard.jpg" alt="StackOverflow Info card" width="240" height="180" /></a><p class="wp-caption-text">StackOverflow Info card</p></div>
<p>Install the card selector, import the info card into the Azigo card seloctor and away you go. Now open up Firefox and do a google search for <a href="http://www.google.com/search?q=What%E2%80%99s+your+most+controversial+programming+opinion%3F&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:en-US:official&amp;client=firefox-a">What’s your most controversial programming opinion?</a></p>
<p>Instead of the plain Google results you are used to, you now get a stack overflow icon to the right of each result that is from a stackoverflow.com domain!</p>
<p><img class="aligncenter size-full wp-image-1115" title="google_results" src="http://geek.michaelgrace.org/wp-content/uploads/2009/11/google_results.jpg" alt="google_results" width="400" height="283" />This was all done with 11 lines of Kynetx code. Like I said before, this is just the beginning. We can write code that can put anything anywhere we want based on what the user wants. I plan on writing a Kynetx app that will place my latest blog posts on the front page of cnn.com for my parents so they can keep up with what I am doing when they go get their news.</p>
<p>From the beginning, billboards, newspapers, radio, and tv advertising has been a shotgun affair. Advertisers and companies broadcasting their ads to anyone and everyone they could. We, the users, have had to suffer through decades of irrelevant and poorly targeted advertising. Kynetx is bringing to the table the technology needed to turn the tables for all of us to rise up and take control of the advertising that we see. I have come to learn that people don&#8217;t really hate advertising, we just don&#8217;t like irrelevant and obscene advertising. Blasted advertisements are ineffective mostly because they lack the ability to understand the context of the receiver. If you can get people to willingly subscribe to advertising that they want&#8230; well, then you have something! I know this has been short and probably all over the place so let me share one more example that happens to be the first Kynetx app that I wrote.</p>
<p>Being able to keep everyone in a company motivated and tuned into the same goals can be a task to say the least. You could blast out emails, bring it up in meetings and blah blah blah but that sucks and it doesn&#8217;t work that great. What if every employee&#8217;s browser knew that they were an employee and injected a slide-out tray with the company goals and up to date progress for those goals while they were surfing the web? I wrote a Kynetx app for that! It only shows up on a few domains and allows each employee to see our Key Performance indicators. I also threw in there at the bottom a notification of how many tweets mentioning the company and how many questions had been asked on our stackexchange site since the day before. CONTEXT RULES!</p>
<p><img class="aligncenter size-full wp-image-1117" title="kynetx.com" src="http://geek.michaelgrace.org/wp-content/uploads/2009/11/contracted.jpg" alt="kynetx.com" width="500" height="472" /><img class="aligncenter size-full wp-image-1118" title="expanded" src="http://geek.michaelgrace.org/wp-content/uploads/2009/11/expanded.jpg" alt="expanded" width="500" height="472" />This is just the beginning and I have done a terrible job of explaining it to you so I hope you will ask lots of questions and come back for more posts explaining and showcasing the awesome power of the purpose-centric-context-sensitive web.</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2009/11/the-context-of-a-stackoverflow-junkie/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Get Incredible Designs with Preston Lee</title>
		<link>http://geek.michaelgrace.org/2009/11/get-incredible-designs-with-preston-lee/</link>
		<comments>http://geek.michaelgrace.org/2009/11/get-incredible-designs-with-preston-lee/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 14:40:22 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Review]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1061</guid>
		<description><![CDATA[Sometimes picking a designer is like finding a good restaurant, you either have to go there and try the food or ask a bunch of your friends where the best place to eat is. Well, I&#8217;m your friend and I found an AWESOME restaurant!! Actually, not a restaurant but an awesome designer!!! His name is [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes picking a designer is like finding a good restaurant, you either have to go there and try the food or ask a bunch of your friends where the best place to eat is. Well, I&#8217;m your friend and I found an AWESOME restaurant!! Actually, not a restaurant but an awesome designer!!!<img class="alignleft size-full wp-image-1064" title="preston_lee" src="http://geek.michaelgrace.org/wp-content/uploads/2009/11/preston_lee.jpg" alt="preston_lee" width="73" height="73" /> His name is Preston Lee and I highly recommend you follow his <a href="http://graphicdesignblender.com/">blog</a>, join the conversation with him on <a href="http://twitter.com/prestondlee">Twitter</a>, AND use his ninja rock star design skills for what ever you need designing for. I recently had Preston design some business cards for me and I was floored with the whole experience and the results. Quick results, rockin designs, and was a ton of fun to work with.</p>
<p>I just recently started <span id="more-1061"></span>following Preston on Twitter and had him do my business cards but I already feel like we have been friends for a while. I couldn&#8217;t have asked for a better design that truly reflects my personality, my goals, is very professional, and everyone loves my card when I give it to them. If you&#8217;re still not convince about his skills and commitment to design, just check out his blog and you will find that Preston is well on his way to the top of the design industry. Anything from website design to  business cards, Preston is your man for the job. So, from a friend to a friend, I promise you that you won&#8217;t be disappointed!</p>
<p>Contact him now via Twitter <a href="http://twitter.com/prestondlee">@prestondlee</a></p>
<p>or on his <a href="http://graphicdesignblender.com/contact">contact page on his blog</a></p>
<div id="attachment_1062" class="wp-caption alignnone" style="width: 310px"><a href="http://graphicdesignblender.com/"><img class="size-full wp-image-1062 " title="business_cards" src="http://geek.michaelgrace.org/wp-content/uploads/2009/11/business_cards.jpg" alt="business_cards" width="300" height="344" /></a><p class="wp-caption-text">Design by Preston</p></div>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2009/11/get-incredible-designs-with-preston-lee/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Some Site Designs I Like</title>
		<link>http://geek.michaelgrace.org/2009/10/some-site-designs-i-like/</link>
		<comments>http://geek.michaelgrace.org/2009/10/some-site-designs-i-like/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 03:36:07 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Giggles]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[List]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=983</guid>
		<description><![CDATA[I recently found a site that features well designed sites and I have picked a few that stood out to me. https://www.redbrickhealth.com/ http://www.studio7designs.com/ http://www.veboolabs.com/ http://www.divvoted.com/ http://thegreatbeardedreef.com/ http://emotionslive.co.uk/ http://www.wpcoder.com/ http://blogfullbliss.com/ http://www.jeromem.net/ http://www.silverbackapp.com/ http://francescomugnai.com/ http://nicolaswill.com/ http://wheeloftea.com/ http://www.christophe-peyras.com/ http://stoodeo.com/ http://www.futurice.com/ http://gotsleeves.appspot.com/ http://beakapp.com/ http://yodaa.com/ http://www.sjlwebdesign.co.uk/ http://codebutton.com/ http://koormann.de/]]></description>
			<content:encoded><![CDATA[<p><a href="http://stoodeo.com/"><img class="aligncenter size-full wp-image-986" title="stoodeo" src="http://geek.michaelgrace.org/wp-content/uploads/2009/10/stoodeo.jpg" alt="stoodeo" width="500" height="279" /></a></p>
<p>I recently found a <a href="http://cssline.com/">site</a> that features well designed sites and I have picked a few that stood out to me.</p>
<p><a href="https://www.redbrickhealth.com/">https://www.redbrickhealth.com/</a></p>
<p><a href="http://www.studio7designs.com/">http://www.studio7designs.com/</a></p>
<p><a href="http://www.veboolabs.com/">http://www.veboolabs.com/</a><span id="more-983"></span></p>
<p><a href="http://www.divvoted.com/">http://www.divvoted.com/</a></p>
<p><a href="http://thegreatbeardedreef.com/">http://thegreatbeardedreef.com/</a></p>
<p><a href="http://emotionslive.co.uk/">http://emotionslive.co.uk/</a></p>
<p><a href="http://www.wpcoder.com/">http://www.wpcoder.com/</a></p>
<p><a href="http://blogfullbliss.com/">http://blogfullbliss.com/</a></p>
<p><a href="http://www.jeromem.net/">http://www.jeromem.net/</a></p>
<p><a href="http://www.silverbackapp.com/">http://www.silverbackapp.com/</a></p>
<p><a href="http://francescomugnai.com/">http://francescomugnai.com/</a></p>
<p><a href="http://nicolaswill.com/">http://nicolaswill.com/</a></p>
<p><a href="http://wheeloftea.com/">http://wheeloftea.com/</a></p>
<p><a href="http://www.christophe-peyras.com/">http://www.christophe-peyras.com/</a></p>
<p><a href="http://stoodeo.com/">http://stoodeo.com/</a><a href="http://www.futurice.com/"></a></p>
<p><a href="http://www.futurice.com/">http://www.futurice.com/</a></p>
<p><a href="http://gotsleeves.appspot.com/">http://gotsleeves.appspot.com/</a></p>
<p><a href="http://beakapp.com/">http://beakapp.com/</a></p>
<p><a href="http://yodaa.com/">http://yodaa.com/</a></p>
<p><a href="http://www.sjlwebdesign.co.uk/">http://www.sjlwebdesign.co.uk/</a></p>
<p><a href="http://codebutton.com/">http://codebutton.com/</a></p>
<p><a href="http://koormann.de/">http://koormann.de/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2009/10/some-site-designs-i-like/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Basic Intro to ActionScript 3</title>
		<link>http://geek.michaelgrace.org/2009/09/basic-intro-to-actionscript-3/</link>
		<comments>http://geek.michaelgrace.org/2009/09/basic-intro-to-actionscript-3/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 04:11:21 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[ActionScript / Flash]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[How to]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=947</guid>
		<description><![CDATA[Finally! I found a really well done, easy to understand, and polished how to video series on ActionScript 3 and Flash. The video series starts at the very beginning and shares how-to in 5 minute clips. I am really glad Adobe and Doug Winnie put this series together. ?? Have you found another amazing Flash [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://tv.adobe.com/show/actionscript-11-with-doug-winnie/"><img class="aligncenter size-full wp-image-948" title="intro actionscript 3" src="http://geek.michaelgrace.org/wp-content/uploads/2009/09/intro_actionscript_3.jpg" alt="intro actionscript 3" width="500" height="279" /></a>Finally! I found a really well done, easy to understand, and polished how to <a href="http://tv.adobe.com/show/actionscript-11-with-doug-winnie/">video series on ActionScript 3 and Flash</a>. The video series starts at the very beginning and shares how-to in 5 minute clips. I am really glad Adobe and Doug Winnie put this series together.</p>
<p>?? Have you found another amazing Flash / ActionScript resource? What was the best thing you did to learn ActionScript?? Let us know! : D</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2009/09/basic-intro-to-actionscript-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My Go-To WordPress Plugins</title>
		<link>http://geek.michaelgrace.org/2009/09/my-go-to-wordpress-plugins/</link>
		<comments>http://geek.michaelgrace.org/2009/09/my-go-to-wordpress-plugins/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 23:44:21 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Review]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=919</guid>
		<description><![CDATA[Just a quick and dirty list for a few of my friends my favorite WordPress Plugins that I use on almost every installation that I do. Akismet AntiVirus AskApache Password Protect CSS Naked Day Fancybox Google XML Sitemaps jQuery lazy load plugin List Drafts Widget Page Links To Really Simple CAPTCHA Spider Tracker WordPress Related [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-920 aligncenter" title="WordPres PLUGin" src="http://geek.michaelgrace.org/wp-content/uploads/2009/09/119929591_a0ec3a641d_m.jpg" alt="WordPres PLUGin" width="240" height="160" />Just a quick and dirty list for a few of my friends my favorite WordPress Plugins that I use on almost every installation that I do.</p>
<p>Akismet<br />
AntiVirus<span id="more-919"></span><br />
AskApache Password Protect<br />
CSS Naked Day<br />
Fancybox<br />
Google XML Sitemaps<br />
jQuery lazy load plugin<br />
List Drafts Widget<br />
Page Links To<br />
Really Simple CAPTCHA<br />
Spider Tracker<br />
WordPress Related Posts<br />
wp-cache<br />
WP-IE6update<br />
WP Security Scan<br />
Electrical Outlet Photo <a rel="cc:attributionURL" href="http://www.flickr.com/photos/grendelkhan/">http://www.flickr.com/photos/grendelkhan/</a> / <a rel="license" href="http://creativecommons.org/licenses/by-sa/2.0/">CC BY-SA 2.0</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2009/09/my-go-to-wordpress-plugins/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Combat Information Overload With Firefox</title>
		<link>http://geek.michaelgrace.org/2009/08/zen-browsing-with-firefox/</link>
		<comments>http://geek.michaelgrace.org/2009/08/zen-browsing-with-firefox/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 05:21:36 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[How to]]></category>
		<category><![CDATA[Other]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[Add-on]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=845</guid>
		<description><![CDATA[I have seen too many people who try to browse the web and get things done with a highly cluttered browser interface and all the extra tools and doodads get in the way. THE PROBLEM Information is flying all around us like debris from a tornado going through a trailer park. Information overload is a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/liebedich/3679711527/"><img class="aligncenter size-full wp-image-851" title="storm" src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/storm.jpg" alt="storm" width="400" height="297" /></a><br />
I have seen too many people who try to browse the web and get things done with a highly cluttered browser interface and all the extra tools and doodads get in the way.</p>
<h3>THE PROBLEM</h3>
<p>Information is flying all around us like debris from a tornado going through a trailer park.<span id="more-845"></span> Information overload is a real problem now for the average person and it can wreak havoc on a persons productivity and goals. Never before in the history man has there been soo much information available. Experts, books, seminars, awareness: the availability of these are low if not non-existent. We are like little children who have been handed a gun with incredible power but no one is talking about how to safely handle it, and people are getting hurt!</p>
<h3>WHAT TO DO</h3>
<p>Fortunately for you, if you &#8220;shoot yourself in the foot&#8221; its your fault! Probably not what you were expecting, but it&#8217;s true. You have control over most of the information you subscribe to.</p>
<ul>
<li>RSS Feeds</li>
<li>Television</li>
<li>Radio</li>
<li>Email</li>
<li>Social Networks</li>
<li>Magazines</li>
<li>Newspaper</li>
</ul>
<h3>WHAT DOES THIS HAVE TO DO WITH MY BROWSER?</h3>
<p>You can control what your Firefox looks like. I have seen too many people who try to browse the web with so many buttons, bars, and add-ons that much of the space for actually viewing web pages is reduced by about a third or more. Take back your browser real estate and surf the web with freedom again!</p>
<h3>WHAT CAN I DO?</h3>
<p>Here is an example of two extremes.</p>
<p><img class="aligncenter size-full wp-image-857" title="bloated_vs_zen_firefox" src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/bloated_vs_zen_firefox.jpg" alt="bloated_vs_zen_firefox" width="650" height="264" /></p>
<p>If the bloated one looks similar to yours or a friends browser then you are in the right place.</p>
<h4>To Do:</h4>
<ul>
<li>Use the Toolbar collapse button to hide the clutter until you need it</li>
</ul>
<p><img src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/please_collapse.jpg" alt="please_collapse" title="please_collapse" width="500" height="833" class="aligncenter size-full wp-image-883" /></p>
<ul>
<li>Remove all add-ons you aren&#8217;t using all of the time (Spring Cleaning!)</li>
<li>Hide toolbars (functionality can often be accessed through the application menu)</li>
<li>Remove buttons that aren&#8217;t needed (most have keyboard shortcuts which are faster)</li>
</ul>
<p><img class="aligncenter size-full wp-image-859" title="customize_firefox_toolbars" src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/customize_firefox_toolbars.jpg" alt="customize_firefox_toolbars" width="400" height="113" />This is really fun because you get to drag and drop buttons where ever you like.<br />
<img class="aligncenter size-full wp-image-860" title="drag_and_drop" src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/drag_and_drop.jpg" alt="drag_and_drop" width="500" height="358" /></p>
<ul>
<li>Hide status bar if you don&#8217;t use it (Bottom gray bar)</li>
</ul>
<p><img class="aligncenter size-full wp-image-870" title="hide_status_bar" src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/hide_status_bar.jpg" alt="hide_status_bar" width="250" height="266" /></p>
<ul>
<li>Disable &#8220;Always show the tab bar&#8221;</li>
</ul>
<p><img class="aligncenter size-full wp-image-862" title="tab_option_firefox" src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/tab_option_firefox.jpg" alt="tab_option_firefox" width="400" height="201" /></p>
<p>The real trick is to balance the functionality of add-ons and buttons with space. After many months of trying different configurations, this has been the most effective layout for me.<br />
<img class="aligncenter size-full wp-image-861" title="my_firefox_layout" src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/my_firefox_layout.jpg" alt="my_firefox_layout" width="616" height="537" /><br />
I use the keyboard shortcuts for the Firebug add-on and the other basic browser buttons like forward, back, refresh, so I have removed all those buttons and add-on bars. I show the status bar on the bottom so I can see if the HTML pages I am coding are validating as strict without running a validator. I also hide the bookmarks bar because I don&#8217;t use them very frequently. Everyone uses the web differently which makes Firefox great for many people because it can be customized for their needs.  Play around with your layout, reduce distractions, and find what works best for you.</p>
<p>Storm Photo: <a rel="cc:attributionURL" href="http://www.flickr.com/photos/liebedich/">http://www.flickr.com/photos/liebedich/</a> / <a rel="license" href="http://creativecommons.org/licenses/by/2.0/">CC BY 2.0</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2009/08/zen-browsing-with-firefox/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Get Firefox Add-ons to Work with ALL Versions of Firefox</title>
		<link>http://geek.michaelgrace.org/2009/08/get-firefox-add-ons-to-work-with-all-versions-of-firefox/</link>
		<comments>http://geek.michaelgrace.org/2009/08/get-firefox-add-ons-to-work-with-all-versions-of-firefox/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 07:23:16 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[How to]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[Add-on]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=794</guid>
		<description><![CDATA[Ever upgraded to the next version of Firefox and your add-on didn&#8217;t show up because it was marked &#8220;Not Compatible&#8221;? There is a very simple way to force your version of Firefox to accept the add-on even if it isn&#8217;t compatible. There are a few reasons why your installed add-ons might get marked as incompatible. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/carbonnyc/2206470413/"><img class="alignleft size-full wp-image-832" title="The way you feel when you realize your favorite add-on is incompatible" src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/shock.jpg" alt="The way you feel when you realize your favorite add-on is incompatible" width="250" height="250" /></a>Ever upgraded to the next version of Firefox and your add-on didn&#8217;t show up because it was marked &#8220;Not Compatible&#8221;? There is a very simple way to force your version of Firefox to accept the add-on even if it isn&#8217;t compatible.</p>
<p>There are a few reasons why your installed add-ons might get marked as incompatible. Sometimes the developer has not changed the install requirements to accept your version. Mozilla suggests to developers that they don&#8217;t mark it compatible until they KNOW it is compatible. So, many developers don&#8217;t mark their add-ons compatible with beta and alpha releases of Firefox. Another reason an add-on might not be marked as compatible is because it really ISN&#8217;T compatible. Running an incompatible add-on can corrupt data in your browser profile and other places on your computer so don&#8217;t force add-ons to work unless you are willing to deal with the risks.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-834" title="Firefox 3.5, 3.6b, 3.7a" src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/all_three.png" alt="all_three" width="400" height="153" /></p>
<p><span id="more-794"></span></p>
<h4>Precautions:</h4>
<ul>
<li>Don&#8217;t force add-ons unless you are willing to deal with possible browser crashing and data/profile corruption!</li>
<li>Backup your profile!</li>
<li>Be an add-on minimalist! The more add-ons you have, the more that can go wrong&#8230; very wrong.</li>
<li>Backup your system regularly. If you don&#8217;t do this already your crazy and you should start yesterday!</li>
</ul>
<h4>How:</h4>
<p>To force Firefox to accept all installed add-ons we simply need to tell it in it&#8217;s configuration file to ignore incompatibility. It will still check for updates and inform you that add-ons are incompatible, but it will let them run.</p>
<h4>Steps:</h4>
<ol>
<li>Open Firefox</li>
<li>Type <code>about:config</code> into browser bar and press enter</li>
<li>Click &#8220;I&#8217;ll be careful, I promise!&#8221; button and chuckle at Mozilla&#8217;s developer&#8217;s humor</li>
<li>Right click on any list item in browser window and select &#8220;New&#8221; -&gt; &#8220;Boolean&#8221;</li>
<li>Paste <code>extensions.checkCompatibility</code> into alert box input window</li>
<li>Select &#8220;False&#8221;</li>
<li>Open add-ons window: Select &#8220;Tools&#8221; -&gt; &#8220;Add-ons&#8221;</li>
<li>Click &#8220;Restart&#8221; on yellow notification bar</li>
<li>Throw your hands up in the air</li>
<li>Shout for joy</li>
<li>Spin around in your twirly chair and get back to work</li>
<li>; )</li>
</ol>
<h4>Visual Steps:</h4>
<ol>
<li>Click on the first image</li>
<li>Click on the arrows that show up when you mouse over the image to walk through the steps visually</li>
<li>Enjoy the show</li>
</ol>

<a href='http://geek.michaelgrace.org/2009/08/get-firefox-add-ons-to-work-with-all-versions-of-firefox/00_non_compatability/' title='00_non_compatability'><img width="150" height="150" src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/00_non_compatability-150x150.jpg" class="attachment-thumbnail" alt="00_non_compatability" title="00_non_compatability" /></a>
<a href='http://geek.michaelgrace.org/2009/08/get-firefox-add-ons-to-work-with-all-versions-of-firefox/01_firefox_about_config/' title='01_firefox_about_config'><img width="150" height="41" src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/01_firefox_about_config-150x41.jpg" class="attachment-thumbnail" alt="01_firefox_about_config" title="01_firefox_about_config" /></a>
<a href='http://geek.michaelgrace.org/2009/08/get-firefox-add-ons-to-work-with-all-versions-of-firefox/02_ill_be_careful_i_promise/' title='02_ill_be_careful_i_promise'><img width="150" height="150" src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/02_ill_be_careful_i_promise-150x150.jpg" class="attachment-thumbnail" alt="02_ill_be_careful_i_promise" title="02_ill_be_careful_i_promise" /></a>
<a href='http://geek.michaelgrace.org/2009/08/get-firefox-add-ons-to-work-with-all-versions-of-firefox/03_create_new_preference/' title='03_create_new_preference'><img width="150" height="150" src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/03_create_new_preference-150x150.jpg" class="attachment-thumbnail" alt="03_create_new_preference" title="03_create_new_preference" /></a>
<a href='http://geek.michaelgrace.org/2009/08/get-firefox-add-ons-to-work-with-all-versions-of-firefox/04_config_preference_name/' title='04_config_preference_name'><img width="150" height="150" src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/04_config_preference_name-150x150.jpg" class="attachment-thumbnail" alt="04_config_preference_name" title="04_config_preference_name" /></a>
<a href='http://geek.michaelgrace.org/2009/08/get-firefox-add-ons-to-work-with-all-versions-of-firefox/05_boolean_choice/' title='05_boolean_choice'><img width="150" height="150" src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/05_boolean_choice-150x150.jpg" class="attachment-thumbnail" alt="05_boolean_choice" title="05_boolean_choice" /></a>
<a href='http://geek.michaelgrace.org/2009/08/get-firefox-add-ons-to-work-with-all-versions-of-firefox/06_extension-checkcompatibility/' title='06_extension.checkCompatibility'><img width="150" height="85" src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/06_extension.checkCompatibility-150x85.jpg" class="attachment-thumbnail" alt="06_extension.checkCompatibility" title="06_extension.checkCompatibility" /></a>
<a href='http://geek.michaelgrace.org/2009/08/get-firefox-add-ons-to-work-with-all-versions-of-firefox/07_firefox_restart/' title='07_firefox_restart'><img width="150" height="131" src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/07_firefox_restart-150x131.jpg" class="attachment-thumbnail" alt="07_firefox_restart" title="07_firefox_restart" /></a>
<a href='http://geek.michaelgrace.org/2009/08/get-firefox-add-ons-to-work-with-all-versions-of-firefox/08_forced_compatability/' title='08_forced_compatability'><img width="150" height="150" src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/08_forced_compatability-150x150.jpg" class="attachment-thumbnail" alt="08_forced_compatability" title="08_forced_compatability" /></a>
<a href='http://geek.michaelgrace.org/2009/08/get-firefox-add-ons-to-work-with-all-versions-of-firefox/all_three/' title='all_three'><img width="150" height="150" src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/all_three-150x150.png" class="attachment-thumbnail" alt="all_three" title="all_three" /></a>
<a href='http://geek.michaelgrace.org/2009/08/get-firefox-add-ons-to-work-with-all-versions-of-firefox/shock/' title='The way you feel when you realize your favorite add-on is incompatible'><img width="150" height="150" src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/shock-150x150.jpg" class="attachment-thumbnail" alt="The way you feel when you realize your favorite add-on is incompatible" title="The way you feel when you realize your favorite add-on is incompatible" /></a>

<p>Shocked Photo: <a rel="cc:attributionURL" href="http://www.flickr.com/photos/carbonnyc/">http://www.flickr.com/photos/carbonnyc/</a> / <a rel="license" href="http://creativecommons.org/licenses/by/2.0/">CC BY 2.0</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2009/08/get-firefox-add-ons-to-work-with-all-versions-of-firefox/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Firefox 3.7 Alpha Release</title>
		<link>http://geek.michaelgrace.org/2009/08/firefox-3-7-alpha-release/</link>
		<comments>http://geek.michaelgrace.org/2009/08/firefox-3-7-alpha-release/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 16:37:56 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Giggles]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[laugh]]></category>
		<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=772</guid>
		<description><![CDATA[Firefox 3.7 Alpha is available for download for developers to try out but it is still very alpha. I love the humor that the Mozilla developers have as seen through the icon used for Firefox 3.7a. The developers have lovingly named the alpha &#8220;Minefield&#8221;. Love it! ; ) Still want to try it out? Download [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_773" class="wp-caption alignleft" style="width: 138px"><img class="size-full wp-image-773 " title="minefield" src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/minefield.png" alt="FF 3.7a - aka Minefield" width="128" height="128" /><p class="wp-caption-text">FF 3.7a - aka Minefield</p></div>
<p>Firefox 3.7 Alpha is available for download for developers to try out but it is still very alpha. I love the humor that the Mozilla developers have as seen through the icon used for Firefox 3.7a. The developers have lovingly named the alpha &#8220;Minefield&#8221;. Love it! ; ) Still want to try it out? <a href="http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/">Download Firefox 3.7 Alpha</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2009/08/firefox-3-7-alpha-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spezify &#8211; Serving Up Search Fresh</title>
		<link>http://geek.michaelgrace.org/2009/08/spezify-serving-up-search-fresh/</link>
		<comments>http://geek.michaelgrace.org/2009/08/spezify-serving-up-search-fresh/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 04:47:17 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Review]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=762</guid>
		<description><![CDATA[Spezify does a good job of representing search results visually and it&#8217;s kind of fun. The big thing I like about Spezify is the navigation response with the keyboard arrow keys. Try it! Left&#8230; right&#8230; up &#038; down. Maybe if the results returned more of one kind of result based on the direction you navigated [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.spezify.com/"><img src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/spezify.jpg" alt="spezify" title="spezify" width="450" height="89" class="aligncenter size-full wp-image-766" /></a><a href="http://www.spezify.com/">Spezify</a> does a good job of representing search results visually and it&#8217;s kind of fun. The big thing I like about Spezify is the navigation response with the keyboard arrow keys. Try it! Left&#8230; right&#8230; up &#038; down. Maybe if the results returned more of one kind of result based on the direction you navigated instead of just loading more results, it would be more useful. Example: If I do a search and I want to see what people are saying about the latest whatever, I&#8217;ll probably be searching for tweets. So, if tweets are shown above the middle of the returned search result screen, when I navigate up, I would expect the engine to return more tweet results rather than a potpourri of media and sites. Overall, I like what they have done but I think it needs a bit more work before it will actually get used for a lot of searching.</p>
<p><img src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/spezify_results.jpg" alt="spezify_results" title="spezify_results" width="300" height="161" class="aligncenter size-full wp-image-763" /></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2009/08/spezify-serving-up-search-fresh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The day I met Ubiquity</title>
		<link>http://geek.michaelgrace.org/2009/08/the-day-i-met-ubiquity/</link>
		<comments>http://geek.michaelgrace.org/2009/08/the-day-i-met-ubiquity/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 02:09:37 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Web Design -Dev]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=725</guid>
		<description><![CDATA[It was Sunday evening as I was settling down and reading some of my RSS feeds when one of the articles mentioned Ubiquity. &#8220;Ubiquity?&#8221;, I thought. &#8220;What in the world is Ubiquity besides &#8216;everywhere&#8217;?!?&#8221; I headed over to the ubiquity main page and watched the intro video. My wife claims that she saw some drool [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/ubiquity_bot_crop.jpg" alt="ubiquity_bot_crop" title="ubiquity_bot_crop" width="500" height="191" class="aligncenter size-full wp-image-726" />It was Sunday evening as I was settling down and reading some of my RSS feeds when one of the articles mentioned Ubiquity. &#8220;Ubiquity?&#8221;, I thought. &#8220;What in the world is Ubiquity besides &#8216;everywhere&#8217;?!?&#8221; I headed over to  the <a href="http://ubiquity.mozilla.com/">ubiquity main page</a> and watched the intro video. My wife claims that she saw some drool and <span id="more-725"></span>heard a few squeals of excitement as I watched the video. Since that time, just over 2 days ago, I haven&#8217;t got much sleep and have been writing Ubiquity commands and dreaming of new ways to improve it. ; )<br />
<img alt="" src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/webcite.jpg" class="aligncenter" width="195" height="54" /><br />
Part of my excitement for Ubiquity is that I started learning a few months ago how to create Firefox add-ons and it was slow going. I have created a <a href="http://geek.michaelgrace.org/webcite/">dashboard widget for Mac OS X</a> that archives the active browsers web page and then copies the results to the clipboard. The widget uses <a href="http://webcitation.org/">www.webcitation.org</a> services and is great for taking snapshots in time of pages for reference and citing online work. I never did finish converting my dashboard widget to a Firefox add-on like planned but within a few hours of playing with Ubiquity I had the widget moved over and working sweet.<br />
<img alt="" src="http://geek.michaelgrace.org/wp-content/uploads/2009/08/sweetter_full.jpg" class="aligncenter" width="307" height="102" /><br />
One other Ubiquity command I want to mention here is one that I did by converting a <a href="http://www.windley.com/archives/2009/08/what_are_people_tweeting_about_this_site.shtml">bookmarklet</a> created by some amazing people over at <a href="http://www.kynetx.com/">Kynetx</a>. The command is called &#8220;sweetter&#8221; and it searches tweets that point to the site that you are currently on. Very cool tool if you are wanting to see what people on Twitter are saying about that site or its services. I would like to improve upon this in the future so that a simpler list of tweets will load in the preview pane without loading the tweets over the page. You&#8217;ll have to check it out and try it because I use it all of the time now. ; )</p>
<p>I think there is immense power and potential in being able to write commands for Ubiquity using JavaScript and HTML. As JavaScript and HTML becomes, pardon the pun but, ubiquitous more people will be able to create commands that extend the functionality of the browser while on the web. I am really impressed with the entire setup and I think Mozilla deserves two thumbs up for pioneering the future of the web.</p>
<p>I have several other commands I have written to use and some just for practice, located on <a href="http://geek.michaelgrace.org/ubiquity/">my ubiquity page</a>. I will continue to update the scripts as I write new commands and work on improving the web. Would love it if you subscribed to the commands and gave me feedback on what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2009/08/the-day-i-met-ubiquity/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Using Creative Commons Images</title>
		<link>http://geek.michaelgrace.org/2009/07/using-creative-commons-images/</link>
		<comments>http://geek.michaelgrace.org/2009/07/using-creative-commons-images/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 07:27:38 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[How to]]></category>
		<category><![CDATA[Web Design -Dev]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=549</guid>
		<description><![CDATA[I am big on not violating copyright laws and respecting others work which is why I love the Flickr &#8211; Creative Commons relationship. There are a lot of people who take great photographs who are willing to share their work as long as you attribute the work to them. Here is how I go about [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/zanastardust/145197704/"><img class="alignleft size-full wp-image-632" title="flickr_flowers" src="http://geek.michaelgrace.org/wp-content/uploads/2009/07/flickr_flowers.jpg" alt="flickr_flowers" width="240" height="159" /></a>I am big on not violating copyright laws and respecting others work which is why I love the Flickr &#8211; Creative Commons relationship. There are a lot of people who take great photographs who are willing to share their work as long as you attribute the work to them. Here is how I go about using photos in Flickr that are using the Creative Commons license.<span id="more-549"></span></p>
<p><img class="alignleft size-full wp-image-612" title="firefox_creative_commons" src="http://geek.michaelgrace.org/wp-content/uploads/2009/07/firefox_creative_commons.jpg" alt="firefox_creative_commons" width="250" height="174" />If you aren&#8217;t already using Firefox I highly encourage you to because there is no other browser like it. When I am writing a blog post, I use the quick search in the top right corner of Firefox to search for photos on Flickr using the Creative Commons license. If you are not using Firefox, (shame! shame!), do your Creative Commons search at <a href="http://search.creativecommons.org/">http://search.creativecommons.org/</a> Search results appear in one column with tabs at the top to chose from search sources other than Flickr.<img class="size-full wp-image-614 alignright" title="firefox_creative_commons_search" src="http://geek.michaelgrace.org/wp-content/uploads/2009/07/firefox_creative_commons_search.jpg" alt="firefox_creative_commons_search" width="400" height="442" /><br />
As I scroll through the images I open the ones I find interesting in a new tab. After searching through a good amount of photos, it has gotten easier to find good ones and I&#8217;m beginning to find a style that fits my blog. I then download the size that best fits my needs by clicking on &#8220;all sizes&#8221; right above the image. <img class="alignleft size-full wp-image-617" title="all_sizes" src="http://geek.michaelgrace.org/wp-content/uploads/2009/07/all_sizes.jpg" alt="all_sizes" width="295" height="270" /></p>
<p>I then end up going back to the page with just that image and all of the comments people have made on the photo. It is time to get the attribution links for all the legal stuff. The link to the Creative Commons license is on the right side with a link just under the heading &#8220;Additional Information&#8221;. The Creative Commons license page explains to what extent the image can be used and how to attribute the image to the owner.<img class="alignright size-full wp-image-619" title="some_rights_reserved" src="http://geek.michaelgrace.org/wp-content/uploads/2009/07/some_rights_reserved.jpg" alt="some_rights_reserved" width="400" height="400" /></p>
<p>The top section of this particular license agreement allows me to use this image on my blog (share) and to remix the image to use it in other ways. If this license agreement did not have the remix statement, it is my understanding that I could not crop the image and use in some of the ways I have in this post. The next section explains how to attribute the photo to the owner and usually provides a nice HTML snippet to copy and paste into your blog or web page.<img class="alignleft size-full wp-image-622" title="attribution" src="http://geek.michaelgrace.org/wp-content/uploads/2009/07/attribution.jpg" alt="attribution" width="400" height="226" /><br />
Note: You can get to the license page from other pages but the link from the images main page is the one that I have found to have the HTML snippet that I use to attribute the images to their respective owners.</p>
<p>After placing the HTML snippets at the end of my blog post I am nice and make the images link back to their main Flickr page which is not required by the license. I find that this is the best way to connect viewers directly with the source of the image and I would appreciate others doing the same with my images if they ever got used. ; ) I also usually open the photos in Photoshop and compress them a bit more for web viewing.</p>
<div id="attachment_626" class="wp-caption aligncenter" style="width: 343px"><a href="http://www.flickr.com/photos/31878512@N06/3490869804/in/photostream/"><img class="size-full wp-image-626" title="How I feel after a good Flickr - CC  fix" src="http://geek.michaelgrace.org/wp-content/uploads/2009/07/happy_man.jpg" alt="How I feel after a good Flickr - CC  fix" width="333" height="500" /></a><p class="wp-caption-text">How I feel after a good Flickr - CC  fix</p></div>
<p>Many artists are happy to let you use their work when you follow the guidelines set in the license. Sometimes if I feel I have done a nice job on a blog post I will leave them a comment on their Flickr photo page letting them know I have used their photo and <a href="http://geek.michaelgrace.org/2009/07/content-is-king/">some have even commented on my blog posts thanking me for using their work</a>! ; )</p>
<p>Photos:<br />
<a rel="cc:attributionURL" href="http://www.flickr.com/photos/zanastardust/">http://www.flickr.com/photos/zanastardust/</a> / <a rel="license" href="http://creativecommons.org/licenses/by/2.0/">CC BY 2.0</a><br />
<a rel="cc:attributionURL" href="http://www.flickr.com/photos/31878512@N06/">http://www.flickr.com/photos/31878512@N06/</a> / <a rel="license" href="http://creativecommons.org/licenses/by/2.0/">CC BY 2.0</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2009/07/using-creative-commons-images/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>jQuery CSS Gotcha with Relative File Paths</title>
		<link>http://geek.michaelgrace.org/2009/07/jquery-css-gotcha-relative-file-path/</link>
		<comments>http://geek.michaelgrace.org/2009/07/jquery-css-gotcha-relative-file-path/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 04:16:09 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Web Design -Dev]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=581</guid>
		<description><![CDATA[jQuery gave a colleague and I a run for our money today at work. We were using jQuery to change the background image after a mouse event. Problem was, after the event, the image would not show up even though the path to the image was *correct. Our site is set up so the html [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/saranv/3521287388/"><img class="alignleft size-full wp-image-582" title="gotcha" src="http://geek.michaelgrace.org/wp-content/uploads/2009/07/3521287388_2dc77cf3e5_m.jpg" alt="gotcha" width="240" height="133" /></a>jQuery gave a colleague and I a run for our money today at work. We were using jQuery to change the background image after a mouse event. Problem was, after the event, the image would not show up even though the path to the image was *correct. <span id="more-581"></span>Our site is set up so the html files are at the root with css and images in their own folders off of the root folder. The external CSS for the background image:<br />
<code>background-image: url('../images/background.jpg');</code><br />
Without thinking much about it, I set jQuery to change the CSS path to the other image just like in the external CSS file<code>$('#background_spot').css('backgroundImage',"url('../images/event_background.jpg')");</code>Every time the event would fire the path would be changed but there would be no image. Argggg! (cue the head scratching here) After a few minutes of wondering what was wrong with me and talking to myself it finally dawned on me&#8230;</p>
<h3>Gotcha&#8230;</h3>
<p>jQuery changes CSS inline rather than to an external CSS document meaning that my relative path was invalid. My jQuery CSS image path needed to be <code>$('#background_spot').css('backgroundImage',"url('images/event_background.jpg')");</code><br />
After making the change for the path of the image to be from the html file we were all smiles.<a href="http://www.flickr.com/photos/dotbenjamin/2765083201/"><img class="size-full wp-image-587 aligncenter" title="all smiles" src="http://geek.michaelgrace.org/wp-content/uploads/2009/07/2765083201_e0958937bf_m.jpg" alt="all smiles" width="240" height="159" /></a><br />
Photos:<br />
<a rel="cc:attributionURL" href="http://www.flickr.com/photos/saranv/">http://www.flickr.com/photos/saranv/</a> / <a rel="license" href="http://creativecommons.org/licenses/by/2.0/">CC BY 2.0</a><br />
<a rel="cc:attributionURL" href="http://www.flickr.com/photos/dotbenjamin/">http://www.flickr.com/photos/dotbenjamin/</a> / <a rel="license" href="http://creativecommons.org/licenses/by-sa/2.0/">CC BY-SA 2.0</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2009/07/jquery-css-gotcha-relative-file-path/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Best Domain Registration Site / Service</title>
		<link>http://geek.michaelgrace.org/2009/07/best-domain-registration-site-service/</link>
		<comments>http://geek.michaelgrace.org/2009/07/best-domain-registration-site-service/#comments</comments>
		<pubDate>Sat, 25 Jul 2009 22:40:10 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Web Design -Dev]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=492</guid>
		<description><![CDATA[I have used several different sites and services to register domains. NameGuard is hands down the best domain registration site and service I have ever used. After registering several domains with NameGuard I wonder why I ever used all the other sites out there. Why FREE Privacy Protection!!! Many other services charge extra, each year, [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_493" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.nameguard.com/"><img class="size-full wp-image-493 " title="NameGuard" src="http://geek.michaelgrace.org/wp-content/uploads/2009/07/NameGuard.jpg" alt="NameGuard" width="300" height="72" /></a><p class="wp-caption-text">NameGuard</p></div>
<p>I have used several different sites and services to register domains. <a href="http://www.nameguard.com/">NameGuard</a> is hands down the best domain registration site and service I have ever used. After registering several domains with NameGuard I wonder why I ever used all the other sites out there.<span id="more-492"></span></p>
<h3>Why</h3>
<ul>
<li><strong>FREE Privacy Protection!!!</strong>
<ul>
<li><strong>Many other services charge extra, each year, for this service</strong></li>
<li><strong>If you don&#8217;t get privacy protection all of your personal information ends up in the <a href="http://www.whois.net/">whois</a> directory for that domain. Bad!<br />
</strong></li>
</ul>
</li>
<li>Industry standard pricing on domains</li>
<li>accepts paypal or credit card for payment</li>
<li>Change DNS name servers at time of registration</li>
<li>Extremely fast registration time</li>
</ul>
<p style="text-align: center;">
<div id="attachment_494" class="wp-caption aligncenter" style="width: 354px"><a href="http://www.nameguard.com/content.php?action=free_services"><img class="size-full wp-image-494 " title="NameGuard Advantages" src="http://geek.michaelgrace.org/wp-content/uploads/2009/07/domain_privacy_protection.png" alt="NameGuard Advantages" width="344" height="215" /></a><p class="wp-caption-text">NameGuard Advantages</p></div>
<p>Even though the girl doesn&#8217;t come with every domain name registration, NameGuard provides some of the best services I have seen yet. Click on the girl to read their list of advantages.</p>
<p>This post may seem like I may be making money through some affiliation program but I make nothing from this post other than helping others enjoy the same great benefits of a great domain registration service while protecting their personal contact information</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2009/07/best-domain-registration-site-service/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Super User Beta Invite</title>
		<link>http://geek.michaelgrace.org/2009/07/super-user-beta-invite/</link>
		<comments>http://geek.michaelgrace.org/2009/07/super-user-beta-invite/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 18:42:32 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[How to]]></category>
		<category><![CDATA[Mac OS]]></category>
		<category><![CDATA[Other]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Web Design -Dev]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=472</guid>
		<description><![CDATA[Some of my friends have shown some interest in joining superuser.com, a sister site to stack overflow. The beta is only semi-private and anyone who really wants to can start contributing to the bank of knowledge being contributed there. If you really want to start that journey, you will have to follow the ewok. (aka [...]]]></description>
			<content:encoded><![CDATA[<p>Some of my friends have shown some interest in joining superuser.com, a sister site to stack overflow. The beta is only semi-private and anyone who really wants to can start contributing to the bank of knowledge being contributed there. If you really want to start that journey, you will have to follow the ewok. (aka click on him ; )</p>
<h3 style="text-align: center;">Enjoy</h3>
<h3 style="text-align: center;"><a href="http://blog.stackoverflow.com/2009/07/super-user-semi-private-beta-begins/"><img class="size-full wp-image-473" title="Super User Invite" src="http://geek.michaelgrace.org/wp-content/uploads/2009/07/ewok-closeup.jpg" alt="ewok-closeup" width="409" height="376" /></a></h3>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2009/07/super-user-beta-invite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Content is King</title>
		<link>http://geek.michaelgrace.org/2009/07/content-is-king/</link>
		<comments>http://geek.michaelgrace.org/2009/07/content-is-king/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 21:31:05 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Web Design -Dev]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=406</guid>
		<description><![CDATA[As I surf the web looking for information and work on building the next greatest how to Linux site, I am reminded just how much content is king. You can have a great design for your sight but if you don&#8217;t have content that people want then you might as well have not posted it [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://geek.michaelgrace.org/wp-content/uploads/2009/07/2449999468_952583467d.jpg" alt="2449999468_952583467d" title="2449999468_952583467d" width="350" height="353" class="alignright size-full wp-image-411" /><br />
As I surf the web looking for information and work on building the next greatest how to Linux site, I am reminded just how much content is king. You can have a great design for your sight but if you don&#8217;t have content that people want then you might as well have not posted it at all. If you want visitors to your site, make your content specific and amazing so that people won&#8217;t be able to ignore you.<br />
<span id="more-406"></span></p>
<div xmlns:cc="http://creativecommons.org/ns#" about="http://www.flickr.com/photos/sd-6/2449999468/"><a rel="cc:attributionURL" href="http://www.flickr.com/photos/sd-6/">http://www.flickr.com/photos/sd-6/</a> / <a rel="license" href="http://creativecommons.org/licenses/by/2.0/">CC BY 2.0</a></div>
<p><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2009/07/content-is-king/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Best Countdown for Blog</title>
		<link>http://geek.michaelgrace.org/2009/07/best-countdown-for-blog/</link>
		<comments>http://geek.michaelgrace.org/2009/07/best-countdown-for-blog/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 04:06:32 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[Widget]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=359</guid>
		<description><![CDATA[This is the best free countdown widget that I have seen yet that is easy to configure and put on any blog. Looks good, easy to insert, minimal ads, and its FREE! I don&#8217;t use these contdown widgets on my blog very often but sometimes they are really fun to have. Make yours at http://www.countdownr.com/ [...]]]></description>
			<content:encoded><![CDATA[<p>This is the best free countdown widget that I have seen yet that is easy to configure and put on any blog. Looks good, easy to insert, minimal ads, and its FREE! I don&#8217;t use these contdown widgets on my blog very often but sometimes they are really fun to have. Make yours at <a href="http://www.countdownr.com/">http://www.countdownr.com/</a></p>
<div id="attachment_360" class="wp-caption aligncenter" style="width: 328px"><a href="http://www.countdownr.com/"><img class="size-full wp-image-360 " title="countdown_widget" src="http://geek.michaelgrace.org/wp-content/uploads/2009/07/countdown_widget.jpg" alt="countdown widget" width="318" height="94" /></a><p class="wp-caption-text">countdown widget</p></div>
<p>Would work well on blogspot (blogger), WordPress, TypePad, and many more.</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2009/07/best-countdown-for-blog/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress upload fail &#8211; unable to create directory&#8230;</title>
		<link>http://geek.michaelgrace.org/2009/05/wordpress-upload-fail-unable-to-create-directory/</link>
		<comments>http://geek.michaelgrace.org/2009/05/wordpress-upload-fail-unable-to-create-directory/#comments</comments>
		<pubDate>Sat, 09 May 2009 07:32:45 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[fail]]></category>
		<category><![CDATA[fix]]></category>
		<category><![CDATA[upload]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=147</guid>
		<description><![CDATA[Error Message: Unable to create directory &#8230; {long directory path} &#8230; Is its parent directory writable by the server? Cause: I recently changed hosting services so when I migrated my blog over to the new server everything worked great except for my WordPress uploads. Most things in WordPress are kept relative and ask the server [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://geek.michaelgrace.org/wp-content/uploads/2009/05/wordpress_bigger.jpg"><img class="aligncenter size-full wp-image-149" title="wordpress_bigger" src="http://geek.michaelgrace.org/wp-content/uploads/2009/05/wordpress_bigger.jpg" alt="wordpress_bigger" width="150" height="150" /></a></p>
<p><strong>Error Message:</strong> Unable to create directory &#8230; {long directory path} &#8230; Is its parent directory writable by the server?</p>
<p><strong>Cause</strong>: I recently changed hosting services so when I migrated my blog over to the new server everything worked great except for my WordPress uploads. Most things in WordPress are kept relative and ask the server where things are but the path to the upload files are kept in the database so if you change servers without changing the database string pointing to the correct directory you will get an error and probably frustrated also.</p>
<p>UPDATE 05/25/09</p>
<p>Thanks to a comment from <a href="http://mattlindsaydesign.com">Matt Lindsay</a> I now realize that there is a much easier way to update the wordpress upload string in the database than digging into the actual database. A big thanks goes out to matt for making my blog better. ; )</p>
<p><strong>Quicker and easier fix</strong></p>
<ol>
<li>Login to your WordPress Admin</li>
<li>Go to &#8220;Settings&#8221;</li>
<li>Select &#8220;Miscellaneous&#8221;</li>
<li>Put the correct path in the input field labeled &#8220;Full URL path to files&#8221;</li>
<li>Save the changes and you should be done</li>
</ol>
<p><a rel="attachment wp-att-213" href="http://geek.michaelgrace.org/2009/05/wordpress-upload-fail-unable-to-create-directory/picture-11-2/"><img class="aligncenter size-full wp-image-213" title="picture-11" src="http://geek.michaelgrace.org/wp-content/uploads/2009/05/picture-11.png" alt="picture-11" width="600" height="231" /></a></p>
<p>The advantage I had in digging into the database is that when I switched hosting services only one of the folders in the path changed so I went in and just modified the one folder. This is nice if you don&#8217;t know the exact file path from the server root like me. ; )</p>
<p><strong>Older more complicated fix:</strong></p>
<ol>
<li>Login to your database for the WordPress blog.</li>
<li>Browse/ view tables in the database created when setting up the blog</li>
<li>Browse/ view table named &#8220;wp_options&#8221;</li>
<li>In the &#8220;option_name&#8221; column look for &#8220;upload_path&#8221; (was #60 for me)</li>
<li>Edit the row values and change to the correct path</li>
<li>Save changes</li>
</ol>
<p><a href="http://geek.michaelgrace.org/wp-content/uploads/2009/05/picture-4.jpg"><img class="aligncenter size-full wp-image-148" title="picture-4" src="http://geek.michaelgrace.org/wp-content/uploads/2009/05/picture-4.jpg" alt="picture-4" width="587" height="350" /></a></p>
<p>After making that change the problem should be fixed and uploading will now work. If this helped be sure to give me a shout and leave a comment. Best of luck to you. ; )</p>
<p>Sources:<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
I figured this out all on my own. ; )  #HappyGeek</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2009/05/wordpress-upload-fail-unable-to-create-directory/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Browser Security</title>
		<link>http://geek.michaelgrace.org/2009/03/browser-security/</link>
		<comments>http://geek.michaelgrace.org/2009/03/browser-security/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 05:22:57 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Mac OS]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Web Design -Dev]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=20</guid>
		<description><![CDATA[I have been upset with Google for taking soo long to put out their Apple version of their Chrome browser. After reading an article on ZDNet about the Pawn2Own hacker event maybe I can give Google some slack. :-) I still want my Chrome ASAP if it is as good as the windows version though. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-22" title="pwn2own_browsers" src="http://geek.michaelgrace.org/wp-content/uploads/2009/03/pwn2own_browsers.png" alt="pwn2own_browsers" width="169" height="184" />I have been upset with Google for taking soo long to put out their Apple version of their Chrome browser. After reading an article on ZDNet about the Pawn2Own hacker event maybe I can give Google some slack. :-) I still want my Chrome ASAP if it is as good as the windows version though. Google seems to be heading in the right direction with their sandbox model for their browser. I am sad that Apple has done so little to create road blocks for hackers but I guess that is expected when you have such a low market share. Now go and read the article and make your own decision on what browser you are going to use. <a href="http://blogs.zdnet.com/security/?p=2941">Questions for Pwn2Own hacker Charlie Miller</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2009/03/browser-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

