<?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</title>
	<atom:link href="http://geek.michaelgrace.org/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>Standing Desk Impressions &#8211; First Week</title>
		<link>http://geek.michaelgrace.org/2012/02/standing-desk-impressions-first-week/</link>
		<comments>http://geek.michaelgrace.org/2012/02/standing-desk-impressions-first-week/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 20:18:11 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[health]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=2061</guid>
		<description><![CDATA[Some of you may have seen a photo or know that I have been trying out standing at my desk recently. Here are some of my thoughts after a week. Findings: Love how it has improved my posture. Feels great for my back and my shoulders. I don&#8217;t slouch like I did in a chair. [...]]]></description>
			<content:encoded><![CDATA[<p>Some of you may have seen a photo or know that I have been trying out standing at my desk recently. Here are some of my thoughts after a week.</p>
<p style="text-align: center;"><img class="aligncenter size-large wp-image-1073" title="322883_10150552475992626_505282625_8718447_485685337_o (1)" src="http://mikegrace.s3.amazonaws.com/geek-blog/standing-desk.jpg" alt="" width="614" height="461" /></p>
<p style="text-align: left;">Findings:</p>
<ul>
<li>Love how it has improved my posture. Feels great for my back and my shoulders.</li>
<li>I don&#8217;t slouch like I did in a chair. No more resting my elbow on the chair or my desk.</li>
<li>Can&#8217;t get as sleepy as I could sitting in a chair.</li>
<li>Feels like I have better blood flow and generally feel more active.</li>
<li>Legs and feet get sore after a while.</li>
<li>Would be really great to have a tall stool to rest my legs and feet throughout the day.</li>
<li>I&#8217;ve heard that a padded mat will help some with the feet hurting.</li>
<li>I find myself wanting to continue to stand at my desk even when my feet and legs are tired.</li>
<li>Many people within WCG and outside WCG on my social networks have either asked questions or shared their love for standing at their desk.</li>
</ul>
<p>Insights:</p>
<ul>
<li>Based on reactions and questions, I think there is a lot of interest both internally to WCG and outside of WCG for working at a desk while standing.</li>
<li>I believe that standing at my desk has made me somewhat more productive in my work day because I don&#8217;t get as sleepy and I feel more active throughout the day.</li>
<li>I also believe that I continue to want to stand at my desk because of how good my posture feels standing at my desk versus sitting.</li>
<li>Working at a desk may not be feasible for everyone since it does put a fair amount of stress on the feet and legs. Some may be able to stand for longer periods at a time than others. I think the key for some will be to have a tall stool so they can gradually work up to standing and working for long periods of time.</li>
</ul>
<p>The next step for me is to get a tall stool to be able to rest my feet and legs throughout the day as they get tired. I may also want to look into a standing pad to reduce the stress on my feet. Standing has been worth the effort and I recommend it to anyone looking to improve their posture and their general health while at work.</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2012/02/standing-desk-impressions-first-week/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Make Your Content Pinterest Pinable</title>
		<link>http://geek.michaelgrace.org/2011/11/make-your-content-pinterest-pinable/</link>
		<comments>http://geek.michaelgrace.org/2011/11/make-your-content-pinterest-pinable/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 18:28:22 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=2051</guid>
		<description><![CDATA[Found a great motivational post, &#8220;Fail Upwards&#8220;, that I wanted to put on my motivation board on Pinterest. Clicked my &#8220;Pin it&#8221; bookmarklet to pin the post but was greeted with this sad message: If you want your content to be sharable on the booming social sharing site, Pinterest, then include a related and cool [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/mookieluv/4928122752/" title="By MookieLuv" target="_blank"><img src="http://mikegrace.s3.amazonaws.com/geek-blog/make-your-content-pinable-please.jpg" alt="" /></a></p>
<p>Found a great motivational post, &#8220;<a href="http://www.cstthegate.com/davetrott/2011/11/fail-upwards/">Fail Upwards</a>&#8220;, that I wanted to put on my motivation board on <a href="http://pinterest.com/mikegrace/">Pinterest</a>. Clicked my &#8220;Pin it&#8221; bookmarklet to pin the post but was greeted with this sad message:</p>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/pinable-fail.png" alt="pinterest pinable fail" /></p>
<p><strong>If you want your content to be sharable on the booming social sharing site, Pinterest, then include a related and cool looking image to go with it!</strong> &#8230; or just include a cool photo ; )</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/11/make-your-content-pinterest-pinable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happiness And Joy Is Your Responsibility</title>
		<link>http://geek.michaelgrace.org/2011/11/happiness-and-joy-is-your-responsibility/</link>
		<comments>http://geek.michaelgrace.org/2011/11/happiness-and-joy-is-your-responsibility/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 15:39:54 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=2046</guid>
		<description><![CDATA[This blog post isn&#8217;t so much about programming or the technical stuff I deal with day to day but I feel that it is important enough to share it here. If these two videos are not viewable on your device I apologize. The next video is on the New York Times Opinions Page. I don&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>This blog post isn&#8217;t so much about programming or the technical stuff I deal with day to day but I feel that it is important enough to share it here. If these two videos are not viewable on your device I apologize. </p>
<p><iframe width="560" height="315" src="http://www.youtube-nocookie.com/embed/RPicL1AWrs8?rel=0" frameborder="0" allowfullscreen></iframe></p>
<p>The next video is on the New York Times Opinions Page. I don&#8217;t agree with A.C. Graylings statement that there is not God but I like the rest of what he says. You can read about it and watch it at <a href="http://video.nytimes.com/video/2011/10/31/opinion/100000001141283/ac-grayling.html">http://video.nytimes.com/video/2011/10/31/opinion/100000001141283/ac-grayling.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/11/happiness-and-joy-is-your-responsibility/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>Google Street View In Your Stores</title>
		<link>http://geek.michaelgrace.org/2011/10/google-street-view-in-your-stores/</link>
		<comments>http://geek.michaelgrace.org/2011/10/google-street-view-in-your-stores/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 17:34:53 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=2020</guid>
		<description><![CDATA[Google Street view is coming to the inside of your stores! Probably old news for some of you but this is the first time that I have seen it and I like it! I needed to get some parts on my bike replaced today so I looked up a bike shop that I had used [...]]]></description>
			<content:encoded><![CDATA[<p>Google Street view is coming to the inside of your stores! Probably old news for some of you but this is the first time that I have seen it and I like it! I needed to get some parts on my bike replaced today so I looked up a bike shop that I had used before and noticed a street view icon on one of their shop images. <a href="http://g.co/maps/uwtkv">http://g.co/maps/uwtkv</a></p>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/street-view-inside-store-listing.jpg" alt="" /></p>
<p>Clicking on the image brings up a really nice 360 degree view of the inside of the store.</p>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/street-view-inside-store-example.png" alt="" /></p>
<p>What excites me about this is it appears that they plan on getting the entire layout of larger stores.</p>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/another-inside-streetview-view.png" alt="" /></p>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/inside-streetview-tripod.png" alt="" /></p>
<p>When I took my bike in I was able to talk with the owner and he said that about 2 weeks ago a few &#8220;Google guys&#8221; (his words) came in and asked him if he wanted to do the &#8220;Google groupon&#8221; thing and if they could take pictures of inside the shop for his Google listing. He hadn&#8217;t seen the 360 view on Google maps yet but I was able to tell him it was cool and it looked good. He said he hasn&#8217;t decide yet on whether he is going to be doing the &#8220;Google groupon&#8221; thing yet because the deal is 1/2 of his regular price and Google gets half of that. He said it would be nice for advertising and getting attention but thought that it might be a bit heaver load and more work than it&#8217;s worth. Great guy.</p>
<p>Check out the listing for yourself if you want to see it. <a href="http://g.co/maps/uwtkv">http://g.co/maps/uwtkv</a></p>
<p>What do you think of this? Will this help you decide what stores you want to go to? If you own a store, will you be allowing Google to do this?</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/10/google-street-view-in-your-stores/feed/</wfw:commentRss>
		<slash:comments>1</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>Print Ubuntu Server IP or EC2 Public IP with Bash Script</title>
		<link>http://geek.michaelgrace.org/2011/09/print-ubuntu-server-ip-or-ec2-public-ip-with-bash-script/</link>
		<comments>http://geek.michaelgrace.org/2011/09/print-ubuntu-server-ip-or-ec2-public-ip-with-bash-script/#comments</comments>
		<pubDate>Mon, 19 Sep 2011 17:53:52 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[EC2]]></category>
		<category><![CDATA[How to]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1990</guid>
		<description><![CDATA[How to get EC2 public IP from command line or bash script Recently, while helping out with the OpenPhoto project, I created a bash script that would print out the Ubuntu server&#8217;s IP address if it was not installed on Amazon&#8217;s EC2. If it is installed on EC2 it would get the publicly accessible IP [...]]]></description>
			<content:encoded><![CDATA[<p>How to get EC2 public IP from command line or bash script</p>
<p>Recently, while helping out with the <a href="https://github.com/openphoto/frontend">OpenPhoto</a> project, I created a bash script that would print out the Ubuntu server&#8217;s IP address if it was not installed on Amazon&#8217;s EC2. If it is installed on EC2 it would get the publicly accessible IP address of the machine and print that out instead.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #666666; font-style: italic;"># finding IP address and compensating for possible EC2 installation</span>
<span style="color: #007800;">EC2</span>=<span style="color: #000000; font-weight: bold;">`</span>curl <span style="color: #660033;">--silent</span> <span style="color: #660033;">--connect-timeout</span> <span style="color: #000000;">1</span> http:<span style="color: #000000; font-weight: bold;">//</span>169.254.169.254<span style="color: #000000; font-weight: bold;">/</span>latest<span style="color: #000000; font-weight: bold;">/</span>meta-data<span style="color: #000000; font-weight: bold;">/</span>public-hostname<span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$EC2</span> <span style="color: #000000; font-weight: bold;">!</span>= <span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>; 
<span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #007800;">IP</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$EC2</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #660033;">-rn</span> <span style="color: #ff0000;">'s/ec2-(.*?)\.compute.*/\1/p'</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">'s/-/./g'</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #000000; font-weight: bold;">else</span>
    <span style="color: #007800;">IP</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">ifconfig</span> eth0 <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">'inet addr:'</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">cut</span> -d: <span style="color: #660033;">-f2</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{ print $1}'</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #000000; font-weight: bold;">fi</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/09/print-ubuntu-server-ip-or-ec2-public-ip-with-bash-script/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>ErrorStack &#8211; Graphite &#8211; StatsD &#8211; NodeJS &#8211; Cron Success Story</title>
		<link>http://geek.michaelgrace.org/2011/09/errorstack-graphite-statsd-nodejs-cron-success-story/</link>
		<comments>http://geek.michaelgrace.org/2011/09/errorstack-graphite-statsd-nodejs-cron-success-story/#comments</comments>
		<pubDate>Tue, 13 Sep 2011 17:16:58 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1976</guid>
		<description><![CDATA[At work I am implementing ErrorStack, Graphite, and StatsD into our projects and tools. We are doing this so we can better understand how our users interact with our products and so we can respond faster and more efficiently to errors. ErrorStack helps us collect, report, and notify us of errors across all of our [...]]]></description>
			<content:encoded><![CDATA[<p>At work I am implementing ErrorStack, Graphite, and StatsD into our projects and tools. We are doing this so we can better understand how our users interact with our products and so we can respond faster and more efficiently to errors.</p>
<ul>
<li><a href="http://errorstack.com/">ErrorStack</a> helps us collect, report, and notify us of errors across all of our applications no matter where they are.</li>
<li><a href="http://graphite.wikidot.com/">Graphite</a> stores and graphes analytical data provided by our products.</li>
<li><a href="https://github.com/etsy/statsd">StatsD</a> run by <a href="http://nodejs.org/">NodeJS</a> collects our analytical data via UDP so there is minimal impact on the performance of our applications as we collect the data.</li>
<li><a href="http://en.wikipedia.org/wiki/Cron">Cron</a> helps us run various tasks on our servers and helps us ensure that things are running smoothly</li>
</ul>
<div>I recently setup a Cron script to ensure that Node is running. If the script finds that Node is no longer running, it reports the issue to ErrorStack and then kicks off the process again. This ensures that we will be able to collect data via StatsD with minimal interruptions. Because I keep a browser window open to keep an eye on some key stats in graphite, I noticed a sudden drop in total metrics received and written to disk.</div>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/drop-in-stats-graphite.jpg" alt="" /></p>
<p>Just a minute or two later I got an email alert from ErrorStack notifying me that Node had died. After checking the graphite graph again I saw that the total metrics received had gone back up because the Cron script was able to restart the process. I love it when a plan comes together like that.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #007800;">PID</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">pidof</span> node<span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$PID</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
  <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;node still running&quot;</span>
<span style="color: #000000; font-weight: bold;">else</span>
  <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;node died&quot;</span>
  curl <span style="color: #660033;">-d</span> <span style="color: #ff0000;">&quot;Msg=node died&amp;_s=yourErrorStackKeyGoesHere&amp;_r=json&quot;</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.errorstack.com<span style="color: #000000; font-weight: bold;">/</span>submit
  <span style="color: #666666; font-style: italic;"># command to start node server again goes here</span>
<span style="color: #000000; font-weight: bold;">fi</span></pre></div></div>

<p>Here is some of the code that I use to report errors to ErrorStack <a href="https://github.com/MikeGrace/ErrorStack-Reporting-Tools">https://github.com/MikeGrace/ErrorStack-Reporting-Tools</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/09/errorstack-graphite-statsd-nodejs-cron-success-story/feed/</wfw:commentRss>
		<slash:comments>0</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>Java Global Exception Handling</title>
		<link>http://geek.michaelgrace.org/2011/09/java-global-exception-handling/</link>
		<comments>http://geek.michaelgrace.org/2011/09/java-global-exception-handling/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 15:56:56 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[30 days of java]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1955</guid>
		<description><![CDATA[It&#8217;s been a while since I have worked with Java and it&#8217;s time for me to brush up so I have decided to do 30 days of Java. I will be attempting to learn something new or explain something about Java each day. In many of my projects I use a remote error collecting service [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a while since I have worked with Java and it&#8217;s time for me to brush up so I have decided to do 30 days of Java. I will be attempting to learn something new or explain something about Java each day.</p>
<p>In many of my projects I use a remote error collecting service called <a href="http://www.errorstack.com/">ErrorStack</a>. Love it! My apps throw errors over the internet to it and it generates report and has a myriad of ways to alert me. I do my best to write code that doesn&#8217;t have errors and handles errors and exception gracefully but it still happens. This is where the Java 1.5 <a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Thread.html#setDefaultUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler)">setDefaultUncaughtExceptionHandler</a> comes in to play.</p>
<p>I wrote some quick code to test out the feature</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">org.michaelgrace.sandbox</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> GlobalErrorHandling <span style="color: #009900;">&#123;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    Handler handler <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Handler<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003399;">Thread</span>.<span style="color: #006633;">setDefaultUncaughtExceptionHandler</span><span style="color: #009900;">&#40;</span>handler<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">throw</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">RuntimeException</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;party on error!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Handler <span style="color: #000000; font-weight: bold;">implements</span> <span style="color: #003399;">Thread</span>.<span style="color: #006633;">UncaughtExceptionHandler</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> uncaughtException<span style="color: #009900;">&#40;</span><span style="color: #003399;">Thread</span> t, <span style="color: #003399;">Throwable</span> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Where did that error come from?!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;This is where I would report the error to ErrorStack&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>e.<span style="color: #006633;">getMessage</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: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>t.<span style="color: #006633;">toString</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;">&#125;</span></pre></div></div>

<p>I exported the class to a <a href="http://mikegrace.s3.amazonaws.com/geek-blog/global-error-test.jar">jar</a> using Eclipse and ran it from the command line</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">mgrace$ java <span style="color: #660033;">-jar</span> global-error-test.jar 
Where did that error come from?<span style="color: #000000; font-weight: bold;">!</span>
This is where I would report the error to ErrorStack
party on error<span style="color: #000000; font-weight: bold;">!</span>
Thread<span style="color: #7a0874; font-weight: bold;">&#91;</span>main,<span style="color: #000000;">5</span>,main<span style="color: #7a0874; font-weight: bold;">&#93;</span></pre></div></div>

<p>It worked!</p>
<p>I plan on building a class for making it easy to report errors to ErrorStack and will release it to the world when I do.</p>
<p>Resources: <a href="http://www.nomachetejuggling.com/2006/06/13/java-5-global-exception-handling/">http://www.nomachetejuggling.com/2006/06/13/java-5-global-exception-handling/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/09/java-global-exception-handling/feed/</wfw:commentRss>
		<slash:comments>0</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>Permanently Add SSH key ssh-add</title>
		<link>http://geek.michaelgrace.org/2011/09/permanently-add-ssh-key-ssh-add/</link>
		<comments>http://geek.michaelgrace.org/2011/09/permanently-add-ssh-key-ssh-add/#comments</comments>
		<pubDate>Mon, 05 Sep 2011 20:19:05 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Mac OS]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1936</guid>
		<description><![CDATA[Recently on my Mac I wanted to add a second SSH key to my authentication agent. Using the ssh-add command I was able to do just that until I restarted my computer. To add the key each time I start up a new terminal session I just added ssh-add ~/.ssh/ec2.pem &#62; /dev/null 2&#62;&#38;1 to my [...]]]></description>
			<content:encoded><![CDATA[<p>Recently on my Mac I wanted to add a second SSH key to my authentication agent. Using the ssh-add command I was able to do just that until I restarted my computer. To add the key each time I start up a new terminal session I just added</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ssh-add</span> ~<span style="color: #000000; font-weight: bold;">/</span>.ssh<span style="color: #000000; font-weight: bold;">/</span>ec2.pem <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;&amp;</span><span style="color: #000000;">1</span></pre></div></div>

<p>to my .profile file located at ~/.profile</p>
<p>The last part of the command is to route the output of the command to dev null so I don&#8217;t see it when I open up terminal.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;&amp;</span><span style="color: #000000;">1</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/09/permanently-add-ssh-key-ssh-add/feed/</wfw:commentRss>
		<slash:comments>0</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>Lessons From Michael Dell</title>
		<link>http://geek.michaelgrace.org/2011/08/lessons-from-michael-dell/</link>
		<comments>http://geek.michaelgrace.org/2011/08/lessons-from-michael-dell/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 15:20:46 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1913</guid>
		<description><![CDATA[Bob Pearson posted on his blog today 10 things he has learned from Michael Dell on innovation and collaboration. I have taken my favorite parts and shared them here. We get smarter when we listen well. Most innovation occurs step by step. It is rarely about the big idea. Collaboration leads to the best ideas [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/roomiccube/3960768062/"><img class="aligncenter" src="http://mikegrace.s3.amazonaws.com/geek-blog/purple-light-bulb.jpg" alt="" width="500" height="333" /></a></p>
<p>Bob Pearson posted on his blog today <a href="http://www.pre-commerce.com/index.php/2011/08/30/lessons-from-michael-dell-on-continual-innovation-and-collaboration/">10 things he has learned from Michael Dell on innovation and collaboration</a>. I have taken my favorite parts and shared them here.</p>
<ul>
<li>We get smarter when we listen well.</li>
<li>Most innovation occurs step by step. It is rarely about the big idea.</li>
<li>Collaboration leads to the best ideas</li>
<li>The most powerful driver of human behavior online is to help your peers.</li>
<li>When companies see themselves as peers, they serve their customers well</li>
<li>People get a sense of empowerment when you allow them to participate and recognize their contribution.</li>
<li>The real action occurs after the idea is received.</li>
<li>Let go, allow your team to try new ideas, fail occasionally and end up with a great batting average.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/08/lessons-from-michael-dell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inefficiencies Of Efficiency</title>
		<link>http://geek.michaelgrace.org/2011/08/inefficiencies-of-efficiency/</link>
		<comments>http://geek.michaelgrace.org/2011/08/inefficiencies-of-efficiency/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 02:33:39 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1905</guid>
		<description><![CDATA[&#8220;Just because you can doesn&#8217;t mean you should&#8221; Sometimes trying to be efficient results in less than efficient results. You have all probably seen manifestations of this even if you didn&#8217;t recognize it. I challenge you to take the next few days and try to recognize these things around you and in things that you might be [...]]]></description>
			<content:encoded><![CDATA[<blockquote>
<p style="text-align: center;">&#8220;Just because you can doesn&#8217;t mean you should&#8221;</p>
</blockquote>
<p>Sometimes trying to be efficient results in less than efficient results. You have all probably seen manifestations of this even if you didn&#8217;t recognize it. I challenge you to take the next few days and try to recognize these things around you and in things that you might be trying to design, build, or do. I would like to present to you one example that I have encountered since moving to Austin.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Exhibit A:</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/efficiency.jpg" alt="" width="640" height="480" /></p>
<p>Now I&#8217;m guessing that one day a person was put in charge of deciding on a layout for the men&#8217;s bathroom. They probably calculated the remaining distance left for the urinal area and exclaimed, &#8220;Hey! There&#8217;s enough space for 2 urinals!&#8221;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/efficiency-01.png" alt="" width="640" height="480" /></p>
<p>SEE! There&#8217;s enough space&#8230; or is there?</p>
<p>Let&#8217;s put it in context of its use.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/efficiency-02.jpg" alt="" width="640" height="480" /></p>
<p>Woah!! That&#8217;s close! And we know it! This is why both urinals almost never get used at the same time. What a waste! If only one urinal had been put in place it would be a much more luxurious experience and other guys wouldn&#8217;t be forced to decide to use a stall or break the <a href="http://blog.xkcd.com/2009/09/02/urinal-protocol-vulnerability/">universal protocol</a>.</p>
<p><strong>Please! As you are designing, building, and going about your every day life, don&#8217;t just do something because you can. Make sure that you take the time to consider the use cases and the context in which the disign, tool, app, etc. will be used.</strong></p>
<p>&nbsp;</p>
<p>: )</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/08/inefficiencies-of-efficiency/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Life Contains Asking Questions</title>
		<link>http://geek.michaelgrace.org/2011/08/life-contains-asking-questions/</link>
		<comments>http://geek.michaelgrace.org/2011/08/life-contains-asking-questions/#comments</comments>
		<pubDate>Tue, 30 Aug 2011 16:36:11 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1901</guid>
		<description><![CDATA[I have always found asking questions an interesting part of life. Asking people clear, concise, and well formed questions can lead you to better information and interaction faster and with less friction. Asking questions to one&#8217;s self can bring better understanding and lead to new discovery. There is soooooooo much to learn about asking questions [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/gorilla-vs-shark.png" alt="" /></p>
<p>I have always found asking questions an interesting part of life. Asking people clear, concise, and well formed questions can lead you to better information and interaction faster and with less friction. Asking questions to one&#8217;s self can bring better understanding and lead to new discovery. There is soooooooo much to learn about asking questions and the impact it has on our lives. </p>
<p>My life is full of asking questions:</p>
<p>- Google search<br />
- How could I build this better?<br />
- What technology would fit this application best?<br />
- What did my wife mean when she said&#8230;<br />
- What does it mean?!</p>
<p>Jeff Atwood recently posted some interesting thoughts on asking questions titled <a href="http://blog.stackoverflow.com/2011/08/gorilla-vs-shark/\">&#8220;Gorilla vs. Shark&#8221;</a>. A fun and interesting read that I recommend. </p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/08/life-contains-asking-questions/feed/</wfw:commentRss>
		<slash:comments>0</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>configure: error: BDB/HDB: BerkeleyDB not available</title>
		<link>http://geek.michaelgrace.org/2011/08/configure-error-bdbhdb-berkeleydb-not-available/</link>
		<comments>http://geek.michaelgrace.org/2011/08/configure-error-bdbhdb-berkeleydb-not-available/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 20:12:50 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1887</guid>
		<description><![CDATA[If you get the error configure: error: BDB/HDB: BerkeleyDB not available Make sure you have BerkleyDB installed by running something like sudo yum install db4 You may also have to run sudo yum install db4-devel]]></description>
			<content:encoded><![CDATA[<p>If you get the error</p>
<blockquote><p>configure: error: BDB/HDB: BerkeleyDB not available</p></blockquote>
<p>Make sure you have BerkleyDB installed by running something like</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> yum <span style="color: #c20cb9; font-weight: bold;">install</span> db4</pre></div></div>

<p>You may also have to run</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> yum <span style="color: #c20cb9; font-weight: bold;">install</span> db4-devel</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/08/configure-error-bdbhdb-berkeleydb-not-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>configure: error: xml2-config not found. Please check your libxml2 installation.</title>
		<link>http://geek.michaelgrace.org/2011/08/configure-error-xml2-config-not-found-please-check-your-libxml2-installation/</link>
		<comments>http://geek.michaelgrace.org/2011/08/configure-error-xml2-config-not-found-please-check-your-libxml2-installation/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 19:45:33 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1883</guid>
		<description><![CDATA[If you get the error configure: error: xml2-config not found. Please check your libxml2 installation. try installing libxml2-devel by running something like sudo yum install libxml2-devel]]></description>
			<content:encoded><![CDATA[<p>If you get the error</p>
<blockquote><p>configure: error: xml2-config not found. Please check your libxml2 installation.</p></blockquote>
<p>try installing libxml2-devel by running something like</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> yum <span style="color: #c20cb9; font-weight: bold;">install</span> libxml2-devel</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/08/configure-error-xml2-config-not-found-please-check-your-libxml2-installation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tools &#8211; See A Need Fill A Need</title>
		<link>http://geek.michaelgrace.org/2011/08/tools-see-a-need-fill-a-need/</link>
		<comments>http://geek.michaelgrace.org/2011/08/tools-see-a-need-fill-a-need/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 20:14:52 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1876</guid>
		<description><![CDATA[Your time and my time is precious. I am grateful for tools that help me get work done quicker and better. I was reminded today how grateful I am for these tools as one was letting me know that it was updating to fix some issues that were found recently. Tools can be immensely useful but only [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.daskeyboard.com/"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/das-keyboard.jpg" alt="" width="650" height="272" /></a></p>
<p>Your time and my time is precious. I am grateful for tools that help me get work done quicker and better. I was reminded today how grateful I am for these tools as one was letting me know that it was updating to fix some issues that were found recently.</p>
<p>Tools can be immensely useful but only if used properly or at all. Here are some of my thoughts on finding and using tools better.</p>
<ol>
<li>Decide today that you are going to try new tools</li>
<li>Don&#8217;t try every new tool that you find</li>
<li>Watch and learn from others around you</li>
<li>Really learn how to use the tool</li>
<li>Question the tools you are currently using</li>
<li>Wish</li>
<li>Build new tools</li>
</ol>
<p>If you decide today that you are going to take the time and effort to use a new tool when you find one, it will be much easier than deciding right when you find it and don&#8217;t feel like you have the time right then or the motivation. If you tried every new tool that you found, you might not have time to actually do anything else. This depends on how many different tools you are finding and trying but it&#8217;s good to use some common sense in this area. Others may have found great tools that you didn&#8217;t know about and paying attention to what your friends and coworkers are using can help you find tools that you might not have otherwise. This also goes for how others use the same tool that you do. It always kills me to watch others use a tool and see that they are greatly under utilizing the potential of the tool.</p>
<p>Have you ever wondered why a tool works the way it does? Have you ever used a tool or an app and thought, &#8220;That was stupid.&#8221; Questioning current methods and tools helps us find and move on to better ways. Many years ago I was in a typing class in Jr High learning how to type. The teacher told us how the qwerty keyboard keys were arranged with the goal to slow down a typist to prevent typewriter arms from jamming up. I remember wondering why we were being taught a keyboard configuration made to slow us down. Unfortunately, no alternatives were presented at that time but several years later I came across dvorak! Dvorak was designed with the goal of being more natural and reflecting the common english language. I made the switch to typing using dvorak just over 3 years ago and I have never looked back.</p>
<p>Have you ever heard yourself or anyone else say, &#8220;I wish that&#8230;&#8221;? This is usually how the sentence begins when someone recognizes that there could be a better way. Don&#8217;t just let those realizations just float by you without thought or action. Do a Google search for a better way or tool to see if you can find one. Ask your friends if they know a better way. Ask an expert in the related area if they have advice on a better way or tool. If none of these return results, then it&#8217;s your turn to come up with a better way or tool. All the tools that I know of and use on a regular basis came to be because someone recognized that there could be a better way and made it so. One person can make a difference. You can make a difference by educating yourself, recognizing areas of need, and taking action.</p>
<p>I really enjoy helping others, finding better ways to do things, and building tools which is a big part of why I enjoy my job as much as I do. Here are some of the tools that I use on my Mac that make tasks easier and more enjoyable.</p>
<p><a href="http://en.wikipedia.org/wiki/Apple_Terminal"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/Terminal.png" alt="" width="128" height="128" /></a><br />
<a href="http://www.panic.com/transmit/"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/Transmit.png" alt="" width="128" height="128" /></a></p>
<p><a href="http://irradiatedsoftware.com/sizeup/"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/SizeUp.png" alt="" width="128" height="128" /></a><br />
<a href="http://en.wikipedia.org/wiki/Preview_(software)"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/preview.png" alt="" width="128" height="128" /></a><br />
<a href="http://www.telestream.net/screen-flow/"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/ScreenFlow3.png" alt="" width="128" height="128" /></a><br />
<a href="http://www.mamp.info/en/index.html"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/mamp-pro.png" alt="" width="128" height="128" /></a><br />
<a href="http://agilebits.com/products/1Password"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/1Password.png" alt="" width="128" height="128" /></a><br />
<a href="https://www.dropbox.com/"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/box.png" alt="" width="128" height="128" /></a><br />
<a href="http://www.alfredapp.com/"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/appicon.png" alt="" width="128" height="128" /></a><br />
<a href="http://jumpcut.sourceforge.net/"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/jumpcut.png" alt="" width="128" height="128" /></a><br />
<a href="http://dayoneapp.com/"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/app-icon.png" alt="" width="128" height="128" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/08/tools-see-a-need-fill-a-need/feed/</wfw:commentRss>
		<slash:comments>4</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>Mike Grace Is Hired!</title>
		<link>http://geek.michaelgrace.org/2011/08/mike-grace-is-hired/</link>
		<comments>http://geek.michaelgrace.org/2011/08/mike-grace-is-hired/#comments</comments>
		<pubDate>Tue, 02 Aug 2011 16:04:59 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1844</guid>
		<description><![CDATA[A few weeks ago I mentioned that I was looking for work and available for hire. Today I am excited to announce that I am hired! I now get to work for WCG and will be working out of their Austin Texas office on 6th street. My wife and I are very excited to be [...]]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago I mentioned that I was<a href="http://geek.michaelgrace.org/2011/07/mike-grace-is-available-for-hire/"> looking for work and available for hire</a>. Today I am excited to announce that I am hired!</p>
<p style="text-align: center;"><a href="http://client.picturememine.com/Events/2011-Tour-de-Donut/Donut-Eating/18243989_XgsJVV#1402988091_b2gfbjd"><img class="aligncenter" src="http://mikegrace.s3.amazonaws.com/geek-blog/2011-tour-de-donut.jpg" alt="" width="455" height="669" /></a></p>
<p>I now get to work for <a href="http://www.wcgworld.com/">WCG</a> and will be working out of their <a href="http://www.wcgworld.com/company/contact-us/">Austin Texas office</a> on <a href="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=101+W.+6th+Street,+Suite+330+Austin,+TX,+78701+&amp;iwloc=A">6th street</a>.</p>
<p style="text-align: center;"><a href="http://wcgworld.com"><img class="aligncenter" src="http://mikegrace.s3.amazonaws.com/geek-blog/wcg.jpg" alt="" width="319" height="176" /></a></p>
<p>My wife and I are very excited to be in Austin, experience the culture, and bask in the warmth of the sun. We are especially excited for the warm winters that we are going to have here ;) I am excited to be part of a winning team, doing amazing things, and making a difference in the lives of others.</p>
<p><a href="http://stevenett.photomerchant.net/galleries/tour-de-donut-2011"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/tour-de-donut-2011-finish-with-fatty.jpg" alt="" width="650" height="431" /></a></p>
<p>You can expect to continue to see me blog here and possibly on <a href="http://blog.wcgworld.com/">WCG&#8217;s blog</a> as well. You can connect with me and stay up on the latest on <a href="http://twitter.com/MikeGrace">Twitter</a>, <a href="facebook.com/mikegrace">Facebook</a>, and <a href="https://plus.google.com/108729898843647210749/posts">Google+</a> where I like to share what I learn and get to know other awesome people.</p>
<p>A huge thank you to family, real life friends, and online friends who reached out and responded to my announcement of looking for work. It always amazes me how supportive and helpful everyone is. The response was amazing and I had lots of good options to choose from. Thank you!</p>
<p>Photos are from the Utah 2011 Tour de Donut ride I did recently. Last photo was taken with the famous &#8220;<a href="http://fatcyclist.com/">Fat Cyclist</a>&#8221; (left) that is making a difference doing what he loves to raise money to fund cancer research and help others with cancer, and my good friend <a href="http://www.mostlybaked.com/">Sam Curren</a> (right).</p>
<p>&#8211; SHAMELESS PLUG ALERT! &#8211;</p>
<p>If you haven&#8217;t checked out my latest Kynetx apps, you should because they are HOT!   The first one <a href="http://geek.michaelgrace.org/2011/07/google-filter-kynetx-app/">filters out foul language</a> and hides animated gifs on G+. The second <a href="http://geek.michaelgrace.org/2011/07/craigslist-inliner-kynetx-app-update/">makes browsing craigslist much easier</a>, faster, and more enjoyable.</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/08/mike-grace-is-hired/feed/</wfw:commentRss>
		<slash:comments>3</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>Mike Grace Is Available For Hire</title>
		<link>http://geek.michaelgrace.org/2011/07/mike-grace-is-available-for-hire/</link>
		<comments>http://geek.michaelgrace.org/2011/07/mike-grace-is-available-for-hire/#comments</comments>
		<pubDate>Fri, 15 Jul 2011 19:29:53 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1818</guid>
		<description><![CDATA[My wife and I are excited to announce that I am currently available for hire. I am a web developer that is passionate about making the world a better place, contributing to &#8220;the team&#8221;, social media, analytics, cycling, and family. Those who have worked with me before know that I am passionate about what I [...]]]></description>
			<content:encoded><![CDATA[<p>My wife and I are excited to announce that I am currently available for hire. I am a web developer that is passionate about making the world a better place, contributing to &#8220;the team&#8221;, social media, analytics, cycling, and <a href="http://familytreestories.michaelgrace.org/" target="_blank">family</a>.</p>
<p><a href="http://mikegrace.s3.amazonaws.com/geek-blog/falling-with-style.jpg"><img class="aligncenter" src="http://mikegrace.s3.amazonaws.com/geek-blog/falling-with-style.jpg" alt="" width="400" height="600" /></a></p>
<p>Those who have worked with me before know that I am passionate about what I do. Please check out my <a href="http://www.linkedin.com/in/michaeltgrace" target="_blank">LinkedIn</a>, <a href="http://twitter.com/#!/mikegrace" target="_blank">Twitter</a>, <a href="www.facebook.com/mikegrace" target="_blank">Facebook</a>, <a href="http://gplus.to/mikegrace" target="_blank">Google+</a>, <a href="http://stackoverflow.com/users/117068/mike-grace" target="_blank">StackOverflow</a> and <a href="http://www.endomondo.com/profile/219855" target="_blank">Endomondo</a> profiles. While you are here, if you are curious to learn more about me, please take a few minutes and go through some recent posts here on my geek blog or browse through some of the photography I have done on <a href="http://photos.michaelgrace.org" target="_blank">smugmug</a>.</p>
<p><a href="http://mikegrace.s3.amazonaws.com/geek-blog/scoot.jpg"><img class="aligncenter" src="http://mikegrace.s3.amazonaws.com/geek-blog/scoot.jpg" alt="" width="400" height="600" /></a></p>
<p><strong>More details &#8211; </strong></p>
<p>My wife and I are willing to live just about anywhere with the exception of Idaho (been there, done that). We would be especially excited to live in any of the following areas:</p>
<ul>
<li>Western Washington</li>
<li>California</li>
<li>Utah</li>
<li>Austin Texas</li>
</ul>
<p><a href="http://geek.michaelgrace.org/2011/02/life-at-a-startup/" target="_blank">I loved working for Kynetx</a> and building apps that helped make the web and browsing experience better. I also really enjoyed building <a href="http://www.windley.com/archives/2011/01/kynetx_app_a_day.shtml" target="_blank">tutorials</a> to help developers just getting into developing Kynetx applications. I&#8217;ve had some of my applications featured in The <a href="http://schott.blogs.nytimes.com/2011/05/10/bleep-tweets-foul-facebook-filter/" target="_blank">New York Times</a>, <a href="http://gawker.com/5798229/censor-your-offensive-friends-on-twitter" target="_blank">Gawker</a>, and more. I enjoy using GIT for projects. I have done work in PHP, Ruby, Python, JavaScript, used the Ruby on Rails, Django, and jQuery frameworks, and work well with HTML and CSS.</p>
<p><strong>Vision &#8211; </strong></p>
<p>My dream is to make the world a better place and work on teams that are striving to change the world. I dream of one day being able to work on projects that will make a difference in people&#8217;s lives without having to worry about how much money I am making. I dream of one day being able to ride my bike across America, meeting people, touring this great country, and raising money for a great cause.</p>
<p><a href="http://mikegrace.s3.amazonaws.com/geek-blog/bike-route.jpg"><img class="aligncenter" src="http://mikegrace.s3.amazonaws.com/geek-blog/bike-route.jpg" alt="" width="400" height="300" /></a></p>
<p>I dream of one day being able to help others who want to change the world but don&#8217;t have the money or the tools to do it.</p>
<p>If you are looking for someone like me or know of a job opportunity that you think might be a good fit for me, please contact me through any of my listed social networks.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&#8230; and now I am going to go for a bike ride because that is how I deal with stress : )</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/07/mike-grace-is-available-for-hire/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>First Adventure into  Creating Animated Gifs</title>
		<link>http://geek.michaelgrace.org/2011/07/first-adventure-into-creating-animated-gifs/</link>
		<comments>http://geek.michaelgrace.org/2011/07/first-adventure-into-creating-animated-gifs/#comments</comments>
		<pubDate>Sat, 09 Jul 2011 00:30:18 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Mac OS]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[gif]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1816</guid>
		<description><![CDATA[Im on a Mac running Photoshop CS3 and it was a breeze! I think my artist wife and I are going to have fun with this! : D Here is my first ever creation in the animated gif world! Enjoy! &#160; It isn&#8217;t hard to do and I watched a simple short youtube video to [...]]]></description>
			<content:encoded><![CDATA[<p>Im on a Mac running Photoshop CS3 and it was a breeze! I think my artist wife and I are going to have fun with this! : D Here is my first ever creation in the animated gif world! Enjoy!</p>
<p><a href="http://mikegrace.s3.amazonaws.com/geek-blog/very-first-animated-gif.gif"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/very-first-animated-gif.gif" alt="" width="50" height="50" /></a></p>
<p>&nbsp;</p>
<p>It isn&#8217;t hard to do and I watched a simple <a href="http://www.youtube.com/watch?v=HXW2vlNu5Rs">short youtube video</a> to figure it out.</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/07/first-adventure-into-creating-animated-gifs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Example Of Listening To Your Customers</title>
		<link>http://geek.michaelgrace.org/2011/07/an-example-of-listening-to-your-customers/</link>
		<comments>http://geek.michaelgrace.org/2011/07/an-example-of-listening-to-your-customers/#comments</comments>
		<pubDate>Sun, 03 Jul 2011 06:35:05 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Social Networking]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1804</guid>
		<description><![CDATA[Today I saw a very good example of a company listening to their customers and getting it right. The company and service, Dropbox recently updated their terms of service, privacy policy, and security overview documents to make them more readable.  Many people online, including one of my close friends, expressed the concern that the changes [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://db.tt/6zYHiOG"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/esuslogo101409.PNG" alt="" width="600" height="203" /></a></p>
<p>Today I saw a very good example of a company listening to their customers and getting it right. The company and service, Dropbox recently updated their terms of service, privacy policy, and security overview documents to make them more readable.  Many people online, including one of my close friends, expressed the concern that the changes made it sound like Dropbox was claiming the rights to all files and intellectual property a user uploads to Dropbox.</p>
<p>Here is the good part. Dropbox was actually listening to what people were saying online and participating in the conversation! They were participating in conversations online where people hang out socially. It&#8217;s a simple concept but it&#8217;s still amazing that many companies haven&#8217;t figured it out yet. Dropbox then followed up that listening with an <a href="http://blog.dropbox.com/?p=846">update to their blog post</a> explaining the changes to their terms of service, etc in more detail. Their customers still had concerns about what was explained so a second update was added to the blog post explaining in even more detail what the changes would mean for each user. Go Dropbox!</p>
<p><a href="http://blog.dropbox.com/?p=846"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/dropbox-is-listening.png" alt="" width="508" height="93" /></a></p>
<p>UPDATE: 07/06/2011</p>
<p>Dropbox reworked the wording in their TOS and posted another blog post and posted also to Twitter -&gt; <a href="http://blog.dropbox.com/?p=867">http://blog.dropbox.com/?p=867</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/07/an-example-of-listening-to-your-customers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Craigslist Inliner Kynetx App</title>
		<link>http://geek.michaelgrace.org/2011/06/craigslist-inliner-kynetx-app/</link>
		<comments>http://geek.michaelgrace.org/2011/06/craigslist-inliner-kynetx-app/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 06:14:15 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Kynetx]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1798</guid>
		<description><![CDATA[Recently while browsing a lot of Craigslist postings I got sick of clicking each link to open in a new tab just to view them. If you have spent much time on Craigslist I&#8217;m sure you have experience the same frustration. This Kynetx app is my answer to my frustration. It will present a button [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://apps.kynetx.com/installable_apps/4445-Craigslist_Inliner"><img src="http://mikegrace.s3.amazonaws.com/geek-blog/craigslist-inliner-button.png" alt="" /></a></p>
<p>Recently while browsing a lot of Craigslist postings I got sick of clicking each link to open in a new tab just to view them. If you have spent much time on Craigslist I&#8217;m sure you have experience the same frustration. This Kynetx app is my answer to my frustration. It will present a button on listing pages that, when clicked, will load each listing inline. You can view the app and get it 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><a href="http://apps.kynetx.com/installable_apps/4445-Craigslist_Inliner"><img src="http://mikegrace.s3.amazonaws.com/geek-blog/craigslist-inliner-working.png" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/06/craigslist-inliner-kynetx-app/feed/</wfw:commentRss>
		<slash:comments>0</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>Traded My Motorcycle For A Happier Wife</title>
		<link>http://geek.michaelgrace.org/2011/05/traded-my-motorcycle-for-a-happier-wife/</link>
		<comments>http://geek.michaelgrace.org/2011/05/traded-my-motorcycle-for-a-happier-wife/#comments</comments>
		<pubDate>Sat, 28 May 2011 02:53:29 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1785</guid>
		<description><![CDATA[My wife and I moved to Utah almost a year ago and we have loved every minute of it. Since moving here I have been riding my bicycle a lot and not using my Honda Gold Wing so much. I decided recently that it would be a good idea to sell my motorcycle and use [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/my-honda-goldwing.jpg" alt="My GL1200 Honda Gold Wing" /></p>
<p>My wife and I moved to Utah almost a year ago and we have loved every minute of it. Since moving here I have been riding my bicycle a lot and not using my Honda Gold Wing so much. I decided recently that it would be a good idea to sell my motorcycle and use the money to buy my wife a computer since she has been without one since her MacBook Air died a few months ago. I&#8217;m really sad that I no loger have a motorcycle to ride but I think what I got in return is worth more. : )</p>
<p><a href="http://photos.michaelgrace.org/Personal/05272011-Cassie-Gets-A-Mac/17258947_Rfbd5t#1310291107_WnCPGn8"><img src="http://mikegrace.s3.amazonaws.com/geek-blog/cassie-gets-a-mac/IMG_20110527_180523.jpg" alt="" /></p>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/cassie-gets-a-mac/IMG_20110527_180534.jpg" alt="" /></p>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/cassie-gets-a-mac/IMG_20110527_180824.jpg" alt="" /></p>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/cassie-gets-a-mac/IMG_20110527_180937.jpg" alt="" /></p>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/cassie-gets-a-mac/IMG_20110527_181053.jpg" alt="" /></p>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/cassie-gets-a-mac/IMG_20110527_181147.jpg" alt="" /></p>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/cassie-gets-a-mac/IMG_20110527_195011.jpg" alt="" /></p>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/cassie-gets-a-mac/IMG_20110527_195018.jpg" alt="" /></p>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/cassie-gets-a-mac/IMG_20110527_195035.jpg" alt="" /></p>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/cassie-gets-a-mac/IMG_20110527_195113.jpg" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/05/traded-my-motorcycle-for-a-happier-wife/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Disable Skype Auto Mic Adjustment On Mac</title>
		<link>http://geek.michaelgrace.org/2011/03/disable-skype-auto-mic-adjustment-on-mac/</link>
		<comments>http://geek.michaelgrace.org/2011/03/disable-skype-auto-mic-adjustment-on-mac/#comments</comments>
		<pubDate>Thu, 31 Mar 2011 04:49:33 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[skype]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1779</guid>
		<description><![CDATA[If you have ever been frustrated with Skype automatically changed the input volume for your microphone you can turn it off. For Skype versions prior to 5 there is this blog post on how to do it http://hints.macworld.com/article.php?story=20081116113445565 For Skype version 5&#8230; Open up the file found at ~/Library/Application Support/Skype/shared.xml At the bottom of the [...]]]></description>
			<content:encoded><![CDATA[<p>If you have ever been frustrated with Skype automatically changed the input volume for your microphone you can turn it off. </p>
<p>For Skype versions prior to 5 there is this blog post on how to do it <a href="http://hints.macworld.com/article.php?story=20081116113445565">http://hints.macworld.com/article.php?story=20081116113445565</a></p>
<p>For Skype version 5&#8230;</p>
<p>Open up the file found at ~/Library/Application Support/Skype/shared.xml</p>
<p>At the bottom of the file you should see something like</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;</span>VoiceEng<span style="color: #000000; font-weight: bold;">&gt;</span>
  <span style="color: #000000; font-weight: bold;">&lt;</span>MicBoost<span style="color: #000000; font-weight: bold;">&gt;</span>
    <span style="color: #000000; font-weight: bold;">&lt;</span>_260<span style="color: #000000; font-weight: bold;">&gt;</span>-<span style="color: #000000;">1</span><span style="color: #000000; font-weight: bold;">&lt;/</span>_260<span style="color: #000000; font-weight: bold;">&gt;</span>
  <span style="color: #000000; font-weight: bold;">&lt;/</span>MicBoost<span style="color: #000000; font-weight: bold;">&gt;</span>
  <span style="color: #000000; font-weight: bold;">&lt;</span>MicVolume<span style="color: #000000; font-weight: bold;">&gt;</span>
    <span style="color: #000000; font-weight: bold;">&lt;</span>_260<span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000;">73</span><span style="color: #000000; font-weight: bold;">&lt;/</span>_260<span style="color: #000000; font-weight: bold;">&gt;</span>
    <span style="color: #000000; font-weight: bold;">&lt;</span>AppleHDAEngineInput.3A8.2C0.2C1.2C0.3A1<span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000;">81</span><span style="color: #000000; font-weight: bold;">&lt;/</span>AppleHDAEngineInput.3A8.2C0.2C1.2C0.3A1<span style="color: #000000; font-weight: bold;">&gt;</span>
    <span style="color: #000000; font-weight: bold;">&lt;</span>AppleHDAEngineInput.3A8.2C0.2C1.2C1.3A2<span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000;">100</span><span style="color: #000000; font-weight: bold;">&lt;/</span>AppleHDAEngineInput.3A8.2C0.2C1.2C1.3A2<span style="color: #000000; font-weight: bold;">&gt;</span>
  <span style="color: #000000; font-weight: bold;">&lt;/</span>MicVolume<span style="color: #000000; font-weight: bold;">&gt;</span>
  <span style="color: #000000; font-weight: bold;">&lt;</span>SpeakerVolume<span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000;">68</span><span style="color: #000000; font-weight: bold;">&lt;/</span>SpeakerVolume<span style="color: #000000; font-weight: bold;">&gt;</span>
<span style="color: #000000; font-weight: bold;">&lt;/</span>VoiceEng<span style="color: #000000; font-weight: bold;">&gt;</span></pre></div></div>

<p>Change the value inside of the &#8216;MicBoost&#8217; and _260 blocks to 0 and that should turn the auto adjusting off.</p>
<p>I also changed the volume to 100 so it is all the way up so I can control the input from my system preferences. In the end yours should end up looking something like this</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;</span>VoiceEng<span style="color: #000000; font-weight: bold;">&gt;</span>
  <span style="color: #000000; font-weight: bold;">&lt;</span>MicBoost<span style="color: #000000; font-weight: bold;">&gt;</span>
    <span style="color: #000000; font-weight: bold;">&lt;</span>_260<span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000;">0</span><span style="color: #000000; font-weight: bold;">&lt;/</span>_260<span style="color: #000000; font-weight: bold;">&gt;</span>
  <span style="color: #000000; font-weight: bold;">&lt;/</span>MicBoost<span style="color: #000000; font-weight: bold;">&gt;</span>
  <span style="color: #000000; font-weight: bold;">&lt;</span>MicVolume<span style="color: #000000; font-weight: bold;">&gt;</span>
    <span style="color: #000000; font-weight: bold;">&lt;</span>_260<span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000;">100</span><span style="color: #000000; font-weight: bold;">&lt;/</span>_260<span style="color: #000000; font-weight: bold;">&gt;</span>
    <span style="color: #000000; font-weight: bold;">&lt;</span>AppleHDAEngineInput.3A8.2C0.2C1.2C0.3A1<span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000;">63</span><span style="color: #000000; font-weight: bold;">&lt;/</span>AppleHDAEngineInput.3A8.2C0.2C1.2C0.3A1<span style="color: #000000; font-weight: bold;">&gt;</span>
    <span style="color: #000000; font-weight: bold;">&lt;</span>AppleHDAEngineInput.3A8.2C0.2C1.2C1.3A2<span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000;">100</span><span style="color: #000000; font-weight: bold;">&lt;/</span>AppleHDAEngineInput.3A8.2C0.2C1.2C1.3A2<span style="color: #000000; font-weight: bold;">&gt;</span>
  <span style="color: #000000; font-weight: bold;">&lt;/</span>MicVolume<span style="color: #000000; font-weight: bold;">&gt;</span>
  <span style="color: #000000; font-weight: bold;">&lt;</span>SpeakerVolume<span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000;">68</span><span style="color: #000000; font-weight: bold;">&lt;/</span>SpeakerVolume<span style="color: #000000; font-weight: bold;">&gt;</span>
<span style="color: #000000; font-weight: bold;">&lt;/</span>VoiceEng<span style="color: #000000; font-weight: bold;">&gt;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/03/disable-skype-auto-mic-adjustment-on-mac/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Podcast Episode 2</title>
		<link>http://geek.michaelgrace.org/2011/03/podcast-episode-2/</link>
		<comments>http://geek.michaelgrace.org/2011/03/podcast-episode-2/#comments</comments>
		<pubDate>Thu, 31 Mar 2011 04:25:15 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Podcast]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1773</guid>
		<description><![CDATA[I really need to get my podcast into a place where people can subscribe to it easily but until then this will work. This weeks podcast I get to have Mike Farmer on the show and we talk about - Kynetx Impact Conference - Kynetx employee layoffs - Geeks and their hobbies &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- 2011-03-30 Mike [...]]]></description>
			<content:encoded><![CDATA[<p>I really need to get my podcast into a place where people can subscribe to it easily but until then this will work. </p>
<p>This weeks podcast I get to have <a href="http://twitter.com/mikefarmer">Mike Farmer</a> on the show and we talk about<br />
- <a href="http://impact.kynetx.com/">Kynetx Impact Conference</a><br />
- <a href="http://geek.michaelgrace.org/2011/02/life-at-a-startup/">Kynetx employee layoffs</a><br />
- Geeks and their hobbies</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
<a href="http://mikegrace.s3.amazonaws.com/geek-blog/podcast/002-mike-grace-podcast-march-30-2011-guest-mike-farmer-kynetx-impact-conference-job-layoffs-geeks-and-hobbies-live-web-endpoint.mp3">2011-03-30 Mike Grace podcast – Click to listen</a><br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/03/podcast-episode-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
<enclosure url="http://mikegrace.s3.amazonaws.com/geek-blog/podcast/002-mike-grace-podcast-march-30-2011-guest-mike-farmer-kynetx-impact-conference-job-layoffs-geeks-and-hobbies-live-web-endpoint.mp3" length="11750251" type="audio/mpeg" />
		</item>
		<item>
		<title>Kynetx&#8217;s New Sandboxed Browser Extensions</title>
		<link>http://geek.michaelgrace.org/2011/03/kynetxs-new-sandboxed-browser-extensions/</link>
		<comments>http://geek.michaelgrace.org/2011/03/kynetxs-new-sandboxed-browser-extensions/#comments</comments>
		<pubDate>Sun, 27 Mar 2011 06:09:35 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[How to]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Add-on]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[sandbox]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1763</guid>
		<description><![CDATA[I recently released my &#8220;Old School Retweet&#8221; Kynetx app in the Kynetx app store for the newly released browser extensions. I super love the new extensions and all that they do for users and developers alike. Something that I forgot when I released the app in the app store is that the new extension are [...]]]></description>
			<content:encoded><![CDATA[<p>I recently released my <a href="http://apps.kynetx.com/installable_apps/1042-old-school-retweet">&#8220;Old School Retweet&#8221; Kynetx app</a> in the <a href="http://apps.kynetx.com/">Kynetx app store</a> for the newly released browser extensions. I super love the new extensions and all that they do for users and developers alike. Something that I forgot when I released the app in the app store is that the new extension are sandboxed.</p>
<p>Because the extensions are sandboxed, all of the scripts from the extensions run a bit differently than they used to in the previous Kynetx extensions. Without getting into the technical details too much, the previous extensions just injected JavaScript into the page and the new extensions run JavaScript in a sandbox which has access to the DOM but can&#8217;t access anything else on the page. Because of this change my retweet app broke since I was using the jQuery loaded by Twitter.com to bring up the new tweet box (I do this because Twitter.com used that library to bind a click event and to trigger that event it has to be from the same library that bound it). Thankfully, with the help of a <a href="http://twitter.com/alexkolson">friend</a>, I was able to get a work around for both Firefox and Chrome&#8217;s sandbox environment.</p>
<p>How I did it&#8230;</p>
<p>If the app is run not inside a sandbox I can just access the jQuery that Twitter.com loads to open a new tweet box</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#new-tweet&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">trigger</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;click&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>From within the Firefox sandbox I can access the page outside of the sandbox</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">window<span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'$'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#new-tweet&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">trigger</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;click&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>If I am in the Chrome sandbox I can create a script element that has the JavaScript that I want to execute. Crude, but it works. : )</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> trigger_click_script <span style="color: #339933;">=</span> document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;script&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> fallback <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;window['$']('#new-tweet').trigger('click');&quot;</span><span style="color: #339933;">;</span>
trigger_click_script.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> fallback<span style="color: #339933;">;</span>
document.<span style="color: #660066;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;head&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">appendChild</span><span style="color: #009900;">&#40;</span>trigger_click_script<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Here is the JavaScript code that I ended up with that gets executed when a user clicks on the retweet button.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// get stuff to retweet</span>
<span style="color: #003366; font-weight: bold;">var</span> tweet <span style="color: #339933;">=</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;">parents</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;.tweet-content&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">find</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;.tweet-text&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>
<span style="color: #003366; font-weight: bold;">var</span> <span style="color: #000066;">name</span> <span style="color: #339933;">=</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;">parents</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;.tweet-content&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">find</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;.tweet-screen-name&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>
&nbsp;
<span style="color: #006600; font-style: italic;">// build tweet</span>
<span style="color: #003366; font-weight: bold;">var</span> retweet <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;RT @&quot;</span><span style="color: #339933;">+</span><span style="color: #000066;">name</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot; &quot;</span><span style="color: #339933;">+</span>tweet<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// open new tweet box</span>
$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#new-tweet&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">trigger</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;click&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// hack for FF sandbox</span>
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#tweet-dialog:visible&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">length</span> <span style="color: #339933;">===</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  window<span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'$'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#new-tweet&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">trigger</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;click&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// put tweet in new tweet box</span>
$K<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;.draggable textarea.twitter-anywhere-tweet-box-editor&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span>retweet<span style="color: #009900;">&#41;</span>.<span style="color: #000066;">focus</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
$K<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#tweet_dialog a.tweet-button.button.disabled&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">removeClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;disabled&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// hack for chrome sandbox</span>
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#tweet-dialog:visible&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">length</span> <span style="color: #339933;">===</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #003366; font-weight: bold;">var</span> fallback <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;window['$']('#new-tweet').trigger('click'); &quot;</span><span style="color: #339933;">;</span>
  fallback <span style="color: #339933;">+=</span> <span style="color: #3366CC;">&quot;window['$']('.draggable textarea.twitter-anywhere-tweet-box-editor').val('&quot;</span><span style="color: #339933;">+</span>retweet<span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;').focus(); &quot;</span><span style="color: #339933;">;</span>
  fallback <span style="color: #339933;">+=</span> <span style="color: #3366CC;">&quot;window['$']('#tweet_dialog a.tweet-button.button.disabled').removeClass('disabled'); &quot;</span><span style="color: #339933;">;</span>
  <span style="color: #003366; font-weight: bold;">var</span> trigger_click_script <span style="color: #339933;">=</span> document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;script&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  trigger_click_script.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> fallback<span style="color: #339933;">;</span>
  document.<span style="color: #660066;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;head&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">appendChild</span><span style="color: #009900;">&#40;</span>trigger_click_script<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/03/kynetxs-new-sandboxed-browser-extensions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jumping Into Podcasting</title>
		<link>http://geek.michaelgrace.org/2011/03/jumping-into-podcasting/</link>
		<comments>http://geek.michaelgrace.org/2011/03/jumping-into-podcasting/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 05:53:55 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Podcast]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1757</guid>
		<description><![CDATA[Recently attended Podcamp SLC and had a great time. Got to learn a bit about podcasting and wanted to try it out. In this episode I talk about podcamp, codecamp, erlang, Kynetx impact conference, Needle, Utah Python user group, Kynetx free lunch friday, AT&#38;T buying T-mobile, Looking for the Good, Kindle, following too many people [...]]]></description>
			<content:encoded><![CDATA[<p>Recently attended Podcamp SLC and had a great time. Got to learn a bit about podcasting and wanted to try it out. In this episode I talk about podcamp, codecamp, erlang, <a href="http://impact.kynetx.com/">Kynetx impact conference</a>, <a href="http://needle.com/">Needle</a>, Utah Python user group, Kynetx free lunch friday, AT&amp;T buying T-mobile, <a href="http://lds.org/liahona/2011/03/looking-for-the-good">Looking for the Good</a>, Kindle, <a href="http://geek.michaelgrace.org/2011/03/the-kynetx-app-i-really-want-to-build/">following too many people on Twitter</a>. Click the link below to start listening now.</p>
<p><a href="http://mikegrace.s3.amazonaws.com/geek-blog/podcast/001-mike-grace-podcast-march-2011-att-buys-tmobile-japan-earthquake-podcamp-codecamp-kindle-ipad-kynetx.mp3">2011-03-20 Mike Grace podcast &#8211; Click to listen</a></p>
<p>Look forward to any comments or feedback people might have : )</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/03/jumping-into-podcasting/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
<enclosure url="http://mikegrace.s3.amazonaws.com/geek-blog/podcast/001-mike-grace-podcast-march-2011-att-buys-tmobile-japan-earthquake-podcamp-codecamp-kindle-ipad-kynetx.mp3" length="6089519" type="audio/mpeg" />
		</item>
		<item>
		<title>How To Rename Mac Terminal Tabs</title>
		<link>http://geek.michaelgrace.org/2011/03/how-to-rename-mac-terminal-tabs/</link>
		<comments>http://geek.michaelgrace.org/2011/03/how-to-rename-mac-terminal-tabs/#comments</comments>
		<pubDate>Fri, 18 Mar 2011 16:11:48 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Mac OS]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Terminal]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1752</guid>
		<description><![CDATA[I&#8217;ve been running a lot of terminal windows lately and getting lost in all the tabs has been annoying. I started searching for a solution and figured out that it&#8217;s super easy to rename the tabs in the terminal for Mac OS X! While on a terminal tab just use the keyboard shortcut of cmd [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been running a lot of terminal windows lately and getting lost in all the tabs has been annoying. I started searching for a solution and figured out that it&#8217;s super easy to rename the tabs in the terminal for Mac OS X! While on a terminal tab just use the keyboard shortcut of cmd + i to pull up the inspector window and then rename it. Easy!</p>
<p>Unnamed terminal tabs:</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/unnamed-mac-terminal-tabs.png" alt="" width="710" height="480" /></p>
<p>Menu option to bring up inspector:</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/menu-option-to-terminal-inspector.png" alt="" width="306" height="437" /></p>
<p>After using cmd + i to bring up Mac Terminal Inspector:</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/mac-terminal-inspector.png" alt="" width="275" height="427" /></p>
<p>After renaming tabs in Terminal:</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/rennamed-mac-terminal-tabs.png" alt="" width="710" height="480" /></p>
<p>If when you bring the inspector window up with cmd + i and the focus isn&#8217;t in the &#8220;Title&#8221; input, you can use shift + cmd + i to put the focus there. You can then press enter to apply the title change or just press escape to apply the title change and close the inspector.</p>
<p>If you liked this or have other cool ideas, let me know in the comments or on Twitter <a title="@MikeGrace" href="http://twitter.com/MikeGrace">@MikeGrace</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/03/how-to-rename-mac-terminal-tabs/feed/</wfw:commentRss>
		<slash:comments>2</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>Lanyrd.com Catches Up With @MikeGrace</title>
		<link>http://geek.michaelgrace.org/2011/03/lanyrd-com-catches-up-with-mikegrace/</link>
		<comments>http://geek.michaelgrace.org/2011/03/lanyrd-com-catches-up-with-mikegrace/#comments</comments>
		<pubDate>Thu, 10 Mar 2011 06:23:23 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Social Networking]]></category>
		<category><![CDATA[Add-on]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1736</guid>
		<description><![CDATA[I saw today that Lanyrd.com has released a chrome and firefox extension to filter out tweets on Twitter.com about #SXSW. I like the design they went with for the UI and it feels good to see a company like Lanyrd create an app that works similarly to what I built about 2 months ago. I [...]]]></description>
			<content:encoded><![CDATA[<p>I saw today that <a href="http://lanyrd.com/blog/2011/notatsxsw/">Lanyrd.com has released a chrome and firefox extension to filter out tweets on Twitter.com about #SXSW</a>.</p>
<p><a href="http://lanyrd.com/blog/2011/notatsxsw/"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/lanyard-sxsw-twitter-extension.png" alt="" width="549" height="171" /></a></p>
<p>I like the design they went with for the UI and it feels good to see a company like Lanyrd create an app that works similarly to what I built about 2 months ago. I decided to put my app interface in the side tray to allow for more controls. The app allows you to hide any tweet based on any word found in the tweet. It also allows you to highlight the tweet if you are interested in particular key words and it remembers your list each time you load the browser.</p>
<p><a href="http://mikegrace.s3.amazonaws.com/geek-blog/tweet-filter-and-highlight-kynetx-app.png"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/tweet-filter-and-highlight-kynetx-app.png" alt="" width="437" height="204" /></a></p>
<p>If you don&#8217;t have it, (you really should) you can get it and try it out at <a href="http://geek.michaelgrace.org/2011/01/tweet-filter-kynetx-app/">http://geek.michaelgrace.org/2011/01/tweet-filter-kynetx-app/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/03/lanyrd-com-catches-up-with-mikegrace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Milestone Celebration For Filtering Foul Language On Twitter</title>
		<link>http://geek.michaelgrace.org/2011/03/milestone-celebration-for-filtering-foul-language-on-twitter/</link>
		<comments>http://geek.michaelgrace.org/2011/03/milestone-celebration-for-filtering-foul-language-on-twitter/#comments</comments>
		<pubDate>Thu, 10 Mar 2011 06:09:07 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Add-on]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1731</guid>
		<description><![CDATA[Party!!!! The Kynetx app that I built to filter out foul language on Twitter.com has filtered through over 200,000 tweets removing over 4,300 foul words! When I originally built the app I didn&#8217;t think it would get used by enough people to get through that many tweets so quickly! I&#8217;m glad I was able to [...]]]></description>
			<content:encoded><![CDATA[<p>Party!!!!</p>
<div class="wp-caption alignnone" style="width: 510px"><img src="http://mikegrace.s3.amazonaws.com/geek-blog/bleep-tweets-party-pose.jpg" alt="" width="500" height="667" /><p class="wp-caption-text">My party stance</p></div>
<p>The Kynetx app that I built to filter out foul language on Twitter.com has filtered through over 200,000 tweets removing over 4,300 foul words!</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/bleep-tweets-filters-quarter-million.png" alt="" width="311" height="134" /></p>
<p>When I originally built the app I didn&#8217;t think it would get used by enough people to get through that many tweets so quickly! I&#8217;m glad I was able to build this app and that others have enjoyed using it. If you would like to try it out you can get it at <a href="http://geek.michaelgrace.org/2011/01/foul-fowl-control-kynetx-app-for-twitter-com/">http://geek.michaelgrace.org/2011/01/foul-fowl-control-kynetx-app-for-twitter-com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/03/milestone-celebration-for-filtering-foul-language-on-twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Kynetx App I really Want To Build</title>
		<link>http://geek.michaelgrace.org/2011/03/the-kynetx-app-i-really-want-to-build/</link>
		<comments>http://geek.michaelgrace.org/2011/03/the-kynetx-app-i-really-want-to-build/#comments</comments>
		<pubDate>Thu, 10 Mar 2011 04:47:57 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Social Networking]]></category>
		<category><![CDATA[Add-on]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Context]]></category>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1724</guid>
		<description><![CDATA[I wrote the other day on Twitter, &#8220;If @my6sense, http://tweetstats.com, @Twitter, and @socialtoo had a baby, that&#8217;s the Kynetx app I want to write. #FillANeed&#8221; I&#8217;m going to tell you all about what that app looks like and what it does but first some background. I use Twitter a lot. I have really enjoyed the whole [...]]]></description>
			<content:encoded><![CDATA[<p>I wrote the other day on Twitter, &#8220;If @my6sense, http://tweetstats.com, @Twitter, and @socialtoo had a baby, that&#8217;s the Kynetx app I want to write. #FillANeed&#8221;<br />
<img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/the-kynetx-app-i-want-to-build-screenshot.png" alt="" width="518" height="270" /></p>
<p>I&#8217;m going to tell you all about what that app looks like and what it does but first some background. I use Twitter a lot.</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/MikeGrace-twitter-badge.png" alt="" width="274" height="109" /></p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/tweet-stats-screenshot.png" alt="" width="537" height="296" /></p>
<p>I have really enjoyed the whole experience. I have found over the past 2 years that connecting with people is what makes Twitter great for me.</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/tweet-stats-replies-screenshot.png" alt="" width="239" height="35" /></p>
<p>Tweeting lots every day is easy along with following lots of people. These two actions only require a little typing and clicking buttons. The hard part is following people and listening to them and engaging in meaningful conversation. I read most updates of the 900 something people that I follow and it takes lots of time and effort.</p>
<p><strong>Here are my goals with Twitter:</strong></p>
<ul>
<li>Find more interesting people to follow and build meaningful relationships with them</li>
<li>Spend less time reading tweets that I&#8217;m not interested in that have no relevance or are basically spam</li>
<li>Spend more time engaged in tweets that are relevant, will help me grow as a person, and build meaningful relationships</li>
<li>Help my friends do the same things listed above</li>
</ul>
<p><strong>Here are some things that stand in the way of me accomplishing those goals</strong></p>
<ul>
<li>Don&#8217;t have a way to quantify and report the relevance of a &#8220;follow&#8221;</li>
<li>Don&#8217;t have a way to quantify the time spent time on Twitter and different Twitter activities</li>
<li>Don&#8217;t have a way to quantify the amount of load a particular follow puts on my  Twitter stream</li>
</ul>
<p>I want to find more people to connect with but it&#8217;s a double edged sword. If I follow more people I increase my chances of finding interesting people to connect with but this same action causes more content to come through my Twitter stream. This makes it harder to stay connected with the people that I have already established a meaningful connection with.</p>
<p>I think an app/service can be created to help me reach all my goals and take care of all the road blocks. This is where My6Sense, TweetStats, SocialToo, Twitter, and Kynetx come in. I envision creating a Kynetx app that</p>
<ul>
<li>records how much time is spent on Twitter reading tweets</li>
<li>what percentage of the tweets I read  are from each follow</li>
<li>the relevance of Tweets and follows as I read and give feedback</li>
</ul>
<p>Because a Kynetx app can be deployed as a browser extension it is fairly easy to get this kind of data and report it to a system through a simple API. The server could then take this data and start doing interesting and helpful things with the data. Things like</p>
<ul>
<li>make suggestions to un-follow people based on a ratio of load vs quality content created much like SocialToo attempts to do through rules</li>
<li>build cool looking, informative, and geeky charts like TweetStats</li>
<li>help me sort Twitter stream based on context similar to what My6Sense does</li>
<li>suggest people to follow based on the relevance data received from my friends</li>
</ul>
<p>Just imagine being able to see personal trends of how much time you spend going through your tweet stream. You could also see trends of the percentage of relevant people you are following, who is generating the most load on your stream, who you find the most relevant, and more. Because all of this is based on your actions on Twitter.com and is quantified you could set goals to improve in different areas. Rewards for achieving those goals could be given and the app could give me help along the way. Built correctly and used well, it could be a powerful tool to transform any social network into an astoundingly strong group of friends and acquaintances that are relevant, meaningful, and create much more benefit than cost to build and maintain.</p>
<p>If you like this idea, have suggestions, or have something you want to say, let me know in the comments or <a href="http://twitter.com/MikeGrace">tweet me</a>!</p>
<p>There is lots more that I could write about but I think I&#8217;ll hold off for now and see what people have to say about this.</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/03/the-kynetx-app-i-really-want-to-build/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Getting Gamification Right</title>
		<link>http://geek.michaelgrace.org/2011/03/getting-gamification-right/</link>
		<comments>http://geek.michaelgrace.org/2011/03/getting-gamification-right/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 05:02:44 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Gamification]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1719</guid>
		<description><![CDATA[I&#8217;ve always loved playing, learning, and games. It isn&#8217;t until the past few years that I&#8217;ve really started thinking more about gamification, what it means, how it plays a role in my life, and how I can learn from it to make better products on the web. I can&#8217;t remember who, but a friend on [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve always loved playing, learning, and games. It isn&#8217;t until the past few years that I&#8217;ve really started thinking more about gamification, what it means, how it plays a role in my life, and how I can learn from it to make better products on the web. I can&#8217;t remember who, but a friend on Twitter posted a link to a slideshare presentation &#8220;Meaningful Play. Getting Gamification Right.&#8221;</p>
<p>I went through each slide reading the notes at the bottom and thinking through each slide. I am genuinely impressed by the thought that has gone into this presentation. In a moment of awesomeness, I experienced an aha moment on slide #103. I found the key to understanding something that has left me perplexed since my childhood.</p>
<p>Back when I was younger, I was often charged with doing the dishes. I hated doing the dishes! Or, so I thought that I hated doing the dishes. Several times I had decided that I wanted to surprise my mom and do the dishes without her asking instead of the often, &#8220;Michael, will you PLEASE do the dishes?!&#8221;. Walking into the kitchen I was excited to do something nice for my mom until I heard, &#8220;Will you please do the dishes Michael?&#8221;. I was furious and my mom was confused. Even though my mom asked nicely, what changed when she asked that made me so mad? I finally understood today on slide #103. Enjoy! : )</p>
<p>(be sure to go through the slides in full screen)</p>
<div style="width:510px" id="__ss_6763616"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/dings/meaningful-play-getting-gamification-right" title="Meaningful Play. Getting »Gamification« Right.">Meaningful Play. Getting »Gamification« Right.</a></strong> <object id="__sse6763616" width="510" height="426"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=vortrag110124googletechtalkfinal-110131101854-phpapp01&#038;rel=0&#038;stripped_title=meaningful-play-getting-gamification-right&#038;userName=dings" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse6763616" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=vortrag110124googletechtalkfinal-110131101854-phpapp01&#038;rel=0&#038;stripped_title=meaningful-play-getting-gamification-right&#038;userName=dings" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="510" height="426"></embed></object>
<div style="padding:5px 0 12px"> View more presentations from <a href="http://www.slideshare.net/dings">Sebastian Deterding</a> </div>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/03/getting-gamification-right/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>New Employment At Needle.com</title>
		<link>http://geek.michaelgrace.org/2011/03/new-employment-at-needle-com/</link>
		<comments>http://geek.michaelgrace.org/2011/03/new-employment-at-needle-com/#comments</comments>
		<pubDate>Thu, 03 Mar 2011 22:39:17 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Needle]]></category>
		<category><![CDATA[Employment]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1709</guid>
		<description><![CDATA[Both my wife and I are very excited to announce that I have accepted a full time job working at Needle of Needle.com We feel very blessed by the many responses we received from friends and family when they found out I was without employment. We ended up having to chose between a couple of [...]]]></description>
			<content:encoded><![CDATA[<p>Both my wife and I are very excited to announce that I have accepted a full time job working at Needle of <a href="http://needle.com/">Needle.com</a></p>
<p><a href="http://needle.com/"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/needle.jpg" alt="" width="382" height="83" /></a></p>
<p>We feel very blessed by the many responses we received from friends and family when they found out I was without employment. We ended up having to chose between a couple of jobs and we are excited with the opportunity that Needle presents us with. We are excited to be staying in the Utah area and plan on continuing to participate in the many great tech events that happen in Utah.</p>
<p>It has been a crazy adventure going <a href="http://geek.michaelgrace.org/2011/02/life-at-a-startup/">from employment to unemployment</a> and back again in just a few short days. I&#8217;m excited about the work that I will be doing and I hope to continue to blog lots as I learn and work. Thank you again to every person that offered help, gave referrals, called me, offered to give a good word, tweeted, blogged, and thought about me. Here&#8217;s to an exciting future. : )</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/03/new-employment-at-needle-com/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Cleaning DropBox Folder</title>
		<link>http://geek.michaelgrace.org/2011/03/cleaning-dropbox-folder/</link>
		<comments>http://geek.michaelgrace.org/2011/03/cleaning-dropbox-folder/#comments</comments>
		<pubDate>Thu, 03 Mar 2011 19:25:13 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[DropBox]]></category>
		<category><![CDATA[GrandPerspective]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1710</guid>
		<description><![CDATA[I love DropBox and don&#8217;t want to pay for the larger amount of space because it&#8217;s such a large jump to make. I recently went through my DropBox folder and cleaned out a bunch of files that I no longer needed in my DropBox folder. The task was made much easier with the help of [...]]]></description>
			<content:encoded><![CDATA[<p>I love DropBox and don&#8217;t want to pay for the larger amount of space because it&#8217;s such a large jump to make. I recently went through my DropBox folder and cleaned out a bunch of files that I no longer needed in my DropBox folder. The task was made much easier with the help of a Mac app named <a href="http://grandperspectiv.sourceforge.net/">GrandPerspective</a>. If you are looking to clean out your DropBox folder try this free app and I think you&#8217;ll find that it helps a lot! It shows blocks representing each file scanned in a specified folder. Hovering over each block shows where the file is located.</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/grandperspective-dropbox-scan-screenshot.png" alt="" width="500" height="389" /></p>
<p>I was able to take my usage from 3 GB down to 692 MB. : )</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/03/cleaning-dropbox-folder/feed/</wfw:commentRss>
		<slash:comments>2</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>Upcoming Kynetx Impact Conference</title>
		<link>http://geek.michaelgrace.org/2011/03/upcoming-kynetx-impact-conference/</link>
		<comments>http://geek.michaelgrace.org/2011/03/upcoming-kynetx-impact-conference/#comments</comments>
		<pubDate>Wed, 02 Mar 2011 18:55:21 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Conference]]></category>
		<category><![CDATA[Impact]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1700</guid>
		<description><![CDATA[I&#8217;m really excited about the upcoming Kynetx Impact conference. I&#8217;m going to be there and really look forward to the great speakers and all of the incredible information that is going to be flowing through everyone. I believe that this is the future of the web. Check out some of these videos to get some [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m really excited about the upcoming Kynetx Impact conference. I&#8217;m going to be there and really look forward to the great speakers and all of the incredible information that is going to be flowing through everyone. I believe that this is the future of the web. Check out some of these videos to get some more insight into what the live web means and what Kynetx Impact conference is going to be. You can sign up and check out the agenda at <a href="http://impact.kynetx.com/">http://impact.kynetx.com/</a></p>
<p><object width="560" height="349"><param name="movie" value="http://www.youtube-nocookie.com/v/Q98ZvrvfQns?fs=1&amp;hl=en_US&amp;rel=0&amp;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube-nocookie.com/v/Q98ZvrvfQns?fs=1&amp;hl=en_US&amp;rel=0&amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="349"></embed></object></p>
<p><object width="560" height="349"><param name="movie" value="http://www.youtube-nocookie.com/v/wb_FAf2LLyQ?fs=1&amp;hl=en_US&amp;rel=0&amp;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube-nocookie.com/v/wb_FAf2LLyQ?fs=1&amp;hl=en_US&amp;rel=0&amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="349"></embed></object></p>
<p><object width="560" height="349"><param name="movie" value="http://www.youtube-nocookie.com/v/UkWIk5xhPQI?fs=1&amp;hl=en_US&amp;rel=0&amp;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube-nocookie.com/v/UkWIk5xhPQI?fs=1&amp;hl=en_US&amp;rel=0&amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="349"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/03/upcoming-kynetx-impact-conference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Closet Stats Junkie</title>
		<link>http://geek.michaelgrace.org/2011/02/closet-stats-junkie/</link>
		<comments>http://geek.michaelgrace.org/2011/02/closet-stats-junkie/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 22:23:27 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Confession]]></category>
		<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Stats]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1692</guid>
		<description><![CDATA[Here is my public admission that I am a bit of a stats junkie. I LOVE NUMBERS AND DATA! As one of my good buddies would say&#8230; &#8220;INPUT!!!!&#8221; Reasons why I think I am addicted to stats: I love tracking statistics within my applications to know what is going on Built my own stats API [...]]]></description>
			<content:encoded><![CDATA[<p>Here is my public admission that I am a bit of a stats junkie. I LOVE NUMBERS AND DATA! As one of my good buddies would say&#8230;</p>
<h3>&#8220;INPUT!!!!&#8221;</h3>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/johnny5.jpg" alt="" width="300" height="152" /></p>
<p>Reasons why I think I am addicted to stats:</p>
<ol>
<li>I love tracking statistics within my applications to know what is going on<br />
<img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/twitter-foul-filter-stats.png" alt="" width="257" height="96" /></li>
<li>Built my own stats API to easily track what my Kynetx apps are doing in JavaScript<br />
<img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/sequel-pro-kynetx-js-stats.png" alt="" width="400" height="297" /></li>
<li>I have been checking <a href="http://tweetstats.com/graphs/mikegrace">http://tweetstats.com/graphs/mikegrace</a> for over a year<br />
<img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/mikegrace-tweet-stats.png" alt="" width="450" height="244" /></li>
<li>I installed DD-WRT on my router mostly for the statistical functionality and for geek cred<br />
<img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/dd-wrt-usage.png" alt="" width="535" height="398" /></li>
<li>Built my own round robin style load tracker for my server so I could better understand its load <a href="http://status.michaelgrace.info/">http://status.michaelgrace.info/<br />
<img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/round-robin-server-load.png" alt="" width="450" height="230" /></a></li>
<li>I built my own JSON interface to the command line top program to monitor who and what is creating the most load on my server</li>
<li>This blog post by the etsy engineering team about tracking everything made me drool <a href="http://codeascraft.etsy.com/2011/02/15/measure-anything-measure-everything/">http://codeascraft.etsy.com/2011/02/15/measure-anything-measure-everything/</a></li>
<li>Even though I didn&#8217;t really enjoy the homework, I absolutely loved my statistics class in college.</li>
<li>Sites like onetruefan.com that give me stats about what I do on the web make my geeky heart beat faster<br />
<img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/one-true-fan-stats.png" alt="" width="209" height="220" /></li>
<li>Purchased a wall plug that would tell me stats on how much electricity my different appliances use</li>
</ol>
<p>As you can see I am fairly addicted to numbers and stats and I haven&#8217;t even listed everything here.  I wish that more stuff was webhook enabled so I could gather meaningful statistics and build cool apps that tied more of my &#8216;stuff&#8217; together in meaningful ways like Kynetx envisions. Here is to a future where life is made better and more interesting through the application and correlation of meaningful data.</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/02/closet-stats-junkie/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>JavaScript Delayed Search Like Google Instant</title>
		<link>http://geek.michaelgrace.org/2011/02/javascript-delayed-search-like-google-instant/</link>
		<comments>http://geek.michaelgrace.org/2011/02/javascript-delayed-search-like-google-instant/#comments</comments>
		<pubDate>Sun, 27 Feb 2011 20:08:55 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Delay]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[search]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1686</guid>
		<description><![CDATA[While working on building a search tool for a documentation site I came up with this demo. I wanted to be able to execute the search much like how Google Instant currently waits for a pause in the users typing to execute the search. This is an example of how I am accomplishing that. You [...]]]></description>
			<content:encoded><![CDATA[<p>While working on building a search tool for a documentation site I came up with this demo. I wanted to be able to execute the search much like how Google Instant currently waits for a pause in the users typing to execute the search. This is an example of how I am accomplishing that. You can check out the live demo at</p>
<p><a href="http://mikegrace.s3.amazonaws.com/geek-blog/sandbox/delay-search.html">http://mikegrace.s3.amazonaws.com/geek-blog/sandbox/delay-search.html</a></p>
<p>This is what the demo looks like even though the code is the fun part:</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/sandbox/delay-search-screenshot.png" alt="" width="473" height="402" /></p>
<h6>Tested on Mac 10.6.6 with Firefox 3.6, Chrome 9.0, Safari 5.0, and Opera 11.01</h6>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/02/javascript-delayed-search-like-google-instant/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Double Key Press Activation State Machine Thingy!</title>
		<link>http://geek.michaelgrace.org/2011/02/double-key-press-activation-state-machine-thingy/</link>
		<comments>http://geek.michaelgrace.org/2011/02/double-key-press-activation-state-machine-thingy/#comments</comments>
		<pubDate>Sun, 27 Feb 2011 01:09:13 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Keyboard]]></category>
		<category><![CDATA[State-Machine]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1679</guid>
		<description><![CDATA[I&#8217;m working on building a documentation search tool based on QuickSilver and Alfred App. I needed a way to activate the search so I built this demo in preparation for finishing the search tool. You can check out the live demo at http://mikegrace.s3.amazonaws.com/geek-blog/double-tap/double-tap.html This is what it looks like even though the code is the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on building a documentation search tool based on QuickSilver and Alfred App. I needed a way to activate the search so I built this demo in preparation for finishing the search tool. You can check out the live demo at</p>
<p><a href="http://mikegrace.s3.amazonaws.com/geek-blog/double-tap/double-tap.html">http://mikegrace.s3.amazonaws.com/geek-blog/double-tap/double-tap.html</a></p>
<p>This is what it looks like even though the code is the fun part:</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/double-tap/double-tap-example-screenshot.png" alt="" width="483" height="482" /></p>
<p>The demo code will shift states as you press the &#8216;s&#8217; key. If you press the &#8216;s&#8217; key quickly enough back to back it will switch to the activated state and stay there until the &#8216;esc&#8217; key is pressed causing it to reset. The code also won&#8217;t change state if the focus is in a textarea or input to prevent activation while a user is typing in an area they don&#8217;t want to be interrupted in. I will have to add an exception for the search tool input box when I implement this to allow the &#8216;esc&#8217; key to reset and hide the search tool while inside of it. You can use the code if you like and I would love to hear any feedback that anyone has about it.</p>
<h6>Tested on Mac 10.6.6 with Firefox 3.6, Chrome 9.0, Safari 5.0, and Opera 11.01</h6>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/02/double-key-press-activation-state-machine-thingy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript Performance Hit Calling Function vs. Inline</title>
		<link>http://geek.michaelgrace.org/2011/02/javascript-performance-hit-calling-function-vs-inline/</link>
		<comments>http://geek.michaelgrace.org/2011/02/javascript-performance-hit-calling-function-vs-inline/#comments</comments>
		<pubDate>Sat, 26 Feb 2011 21:05:00 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1673</guid>
		<description><![CDATA[I know there is a performance hit when calling a function vs just running the code right there but I was curious how much that would be in different browsers. I went over to one of my favorite JS testing sites, http://jsperf.com/ , and setup a simple test. Running a few tests on a few [...]]]></description>
			<content:encoded><![CDATA[<p>I know there is a performance hit when calling a function vs just running the code right there but I was curious how much that would be in different browsers. I went over to one of my favorite JS testing sites, <a href="http://jsperf.com/">http://jsperf.com/</a> , and setup a simple test. Running a few tests on a few different browsers suggests that there is about a 50% performance hit when calling a function with a small task.</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/js-function-call-vs-inline-zoom.png" alt="" width="314" height="162" /></p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/js-function-call-vs-inline.png" alt="" width="580" height="178" /></p>
<p>You can check out the most recent results at <a href="http://jsperf.com/function-call-vs-inline">http://jsperf.com/function-call-vs-inline</a> and test your own browser.</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/02/javascript-performance-hit-calling-function-vs-inline/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Life At A Startup</title>
		<link>http://geek.michaelgrace.org/2011/02/life-at-a-startup/</link>
		<comments>http://geek.michaelgrace.org/2011/02/life-at-a-startup/#comments</comments>
		<pubDate>Sat, 26 Feb 2011 06:11:02 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Startup]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1667</guid>
		<description><![CDATA[Before I get started let&#8217;s get 2 points out in the open: 1) Yes, at the time of this blog post I am unemployed. 2) Kynetx is still kickin butt and taking names. Kynetx FTW! Yesterday morning I found out that I no longer had a job at Kynetx as Kynetx was shifting to plan [...]]]></description>
			<content:encoded><![CDATA[<p>Before I get started let&#8217;s get 2 points out in the open:</p>
<p>1) Yes, at the time of this blog post I am unemployed.</p>
<p>2) Kynetx is still kickin butt and taking names. Kynetx FTW!</p>
<p>Yesterday morning I found out that I no longer had a job at Kynetx as Kynetx was shifting to plan B. Any good startup worth their salt always has a plan B and Kynetx is executing that plan B. In <a href="http://twitter.com/#!/fulling/status/41331332592304128">Steve Fulling&#8217;s own words</a>, &#8220;failed bridge financing. Re-aligned staffing to revenue. We&#8217;re open &amp; okay&#8221;. I&#8217;m bummed out that I don&#8217;t get to be a part of that plan B execution but I have known since the day I joined the team that this was always a possibility and I have absolutely no regrets about joining the Kynetx team. One of my best friends, Michael Farmer, expresses my feelings better than I could over on his blog post at <a href="http://michaelfarmer.info/people-thought-i-was-crazy">http://michaelfarmer.info/people-thought-i-was-crazy</a></p>
<p>While the last 48 hours have been a roller coaster of an emotional ride, my wife and I are very excited for the future and all of the possibilities that it holds. I am overflowing with gratitude and love for everyone on the Kynetx team family. I have grown tremendously as an individual and as a developer while working at Kynetx and have learned so very much from all the extremely smart and talented team. I gladly welcome any future opportunities to work with anyone on the team and highly recommend each one of them.</p>
<p>Here&#8217;s to an exciting future.</p>
<p>oh! And what blog post from me about Kynetx would be complete without some &#8220;Grace faces&#8221; that have become somewhat legendary within the Kynetx team.</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/grace-faces/day-15-crazy-face.jpeg" alt="" width="150" height="57" /><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/grace-faces/day-21-crazy-face.jpeg" alt="" width="200" height="228" /><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/grace-faces/day-25-crazy-face.jpeg" alt="" width="150" height="242" /><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/grace-faces/day-26-crazy-face.jpeg" alt="" width="200" height="200" /><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/grace-faces/day-27-crazy-face.png" alt="" width="200" height="222" /><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/grace-faces/day-37-crazy-face.jpeg" alt="" width="200" height="179" /></p>
<h2>Update:</h2>
<p>Several of my co-workers have also blogged about the recent change at Kynetx and they are all a good read.</p>
<p>Mike Farmer -&gt; <a href="http://michaelfarmer.info/people-thought-i-was-crazy">http://michaelfarmer.info/people-thought-i-was-crazy</a></p>
<p>Q Wade Billings -&gt; <a href="http://scramswitch.blogspot.com/2011/02/one-of-my-favorite-musical-artist-is.html">http://scramswitch.blogspot.com/2011/02/one-of-my-favorite-musical-artist-is.html</a></p>
<p>Sam Curren -&gt; <a href="http://www.mostlybaked.com/changing-sails">http://www.mostlybaked.com/changing-sails</a></p>
<p>Jessie Morris -&gt; <a href="http://www.jessieamorris.com/content/so-long-and-thanks-all-fishing-lessons">http://www.jessieamorris.com/content/so-long-and-thanks-all-fishing-lessons</a></p>
<p>Phil Windley -&gt; <a href="http://www.windley.com/archives/2011/02/starting_a_high_tech_business_making_hard_decisions.shtml">http://www.windley.com/archives/2011/02/starting_a_high_tech_business_making_hard_decisions.shtml</a></p>
<p>Alex Olson -&gt; <a href="http://www.alexkolson.com/2011/03/01/reduction-in-force/">http://www.alexkolson.com/2011/03/01/reduction-in-force/</a></p>
<p>Also, a friend/fan of Kynetx has also blogged about his thoughts on the recent events</p>
<p>Holden Page -&gt; <a href="http://pagesaresocial.com/2011/02/28/extending-best-wishes-kynetx/">http://pagesaresocial.com/2011/02/28/extending-best-wishes-kynetx/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/02/life-at-a-startup/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Growl Notifications For Yammer.com Website</title>
		<link>http://geek.michaelgrace.org/2011/02/growl-notifications-for-yammer-com-website/</link>
		<comments>http://geek.michaelgrace.org/2011/02/growl-notifications-for-yammer-com-website/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 23:53:37 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Growl]]></category>
		<category><![CDATA[NotifyIO]]></category>
		<category><![CDATA[Yammer]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1662</guid>
		<description><![CDATA[I have tried many different applications for Yammer and they all disappoint. I recently started using the website and found it to be MUCH better than any client I have tried yet. The biggest failing point for the website is the lack of growl notifications to let me know I have a new Yam waiting [...]]]></description>
			<content:encoded><![CDATA[<p>I have tried many different applications for Yammer and they all disappoint. I recently started using the website and found it to be MUCH better than any client I have tried yet. The biggest failing point for the website is the lack of growl notifications to let me know I have a new Yam waiting for me to see. This is the reason I created the &#8220;Growlin Yammer&#8221; Kynetx app that uses Notify.io</p>
<p>You will need to install Desktop Notifier app linked to at <a href="http://www.notify.io/">http://www.notify.io/</a> and my Kynetx app will walk you through getting setup what it needs to run. Once everything is setup and running, you can click the &#8216;test&#8217; link created by the Kynetx app to make sure everything is working</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/growlin-yammer/growlin-yammer-test-button.png" alt="" width="209" height="205" /></p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/growlin-yammer/growlin-yammer-growl.png" alt="" width="500" height="211" /></p>
<p><a href="http://kynetx-apps.s3.amazonaws.com/growlin-yammer/Growlin_Yammer.crx">Download Chrome Extension</a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="http://kynetx-apps.s3.amazonaws.com/growlin-yammer/Growlin_Yammer.crx"><img style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://mikegrace.s3.amazonaws.com/geek-blog/chrome-90.png" alt="" /></a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="http://kynetx-apps.s3.amazonaws.com/growlin-yammer/Growlin_Yammer.xpi">Download Firefox Extension</a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="http://kynetx-apps.s3.amazonaws.com/growlin-yammer/Growlin_Yammer.xpi"><img style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://mikegrace.s3.amazonaws.com/geek-blog/firefox-90.png" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/02/growl-notifications-for-yammer-com-website/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Uploading Browser Extensions To S3 Using Transmit</title>
		<link>http://geek.michaelgrace.org/2011/02/uploading-browser-extensions-to-s3-using-transmit/</link>
		<comments>http://geek.michaelgrace.org/2011/02/uploading-browser-extensions-to-s3-using-transmit/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 23:33:42 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[How to]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[Transmit]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1659</guid>
		<description><![CDATA[I create a lot of browser extensions and like to upload them to S3. It&#8217;s super nice to have each respective browser automatically start the install process on download. To do this, specific headers need to be set on the file and it&#8217;s SUPER easy with Transmit. 1) Open Transmit preferences 2) View &#8220;Cloud&#8221; options [...]]]></description>
			<content:encoded><![CDATA[<p>I create a lot of browser extensions and like to upload them to S3. It&#8217;s super nice to have each respective browser automatically start the install process on download. To do this, specific headers need to be set on the file and it&#8217;s SUPER easy with Transmit.</p>
<p>1) Open Transmit preferences</p>
<p>2) View &#8220;Cloud&#8221; options</p>
<p>3) Add custom header for crx file extensions (content-type text/plain)<br />
<img alt="" src="http://mikegrace.s3.amazonaws.com/geek-blog/transmit-s3-chrome-extension.png" class="alignnone" width="600" height="374" /></p>
<p>4) Add custom header for xpi file extensions (content-type application/x-xpinstall)<br />
<img alt="" src="http://mikegrace.s3.amazonaws.com/geek-blog/transmit-s3-firefox-extension.png" class="alignnone" width="600" height="374" /></p>
<p>Once these are set, every time a file with one of those extensions gets uploaded the proper headers will be set and your user&#8217;s browsers will automatically start the install process.</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/02/uploading-browser-extensions-to-s3-using-transmit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Facebook Possible Friend Statistical Graph Thingy</title>
		<link>http://geek.michaelgrace.org/2011/02/facebook-possible-friend-statistical-graph-thingy/</link>
		<comments>http://geek.michaelgrace.org/2011/02/facebook-possible-friend-statistical-graph-thingy/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 01:36:19 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Add-on]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Facebook]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1647</guid>
		<description><![CDATA[I found Facebook&#8217;s &#8220;Find Friends&#8221; browse page and thought it would be fun to do an experiment with the data contained within. To participate in the experiment download and install either this Firefox or Chrome Kynetx browser extension. Download Chrome Extension Download Firefox Extension The app will put a button on the Friend Finder page [...]]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fgeek.michaelgrace.org%2F2011%2F02%2Ffacebook-possible-friend-statistical-graph-thingy%2F&amp;layout=box_count&amp;show_faces=true&amp;width=450&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=65" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:65px;" allowTransparency="true"></iframe></p>
<p>I found Facebook&#8217;s <a href="http://www.facebook.com/find-friends/browser/">&#8220;Find Friends&#8221; browse page</a> and thought it would be fun to do an experiment with the data contained within. To participate in the experiment download and install either this Firefox or Chrome Kynetx browser extension.</p>
<p><a href="http://mikegrace.s3.amazonaws.com/geek-blog/possible-facebook-friend-stats-thingy/Facebook_Possible_Friend_Statistical_Graph_Thingy.crx">Download Chrome Extension</a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="http://mikegrace.s3.amazonaws.com/geek-blog/possible-facebook-friend-stats-thingy/Facebook_Possible_Friend_Statistical_Graph_Thingy.crx"><img style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://mikegrace.s3.amazonaws.com/geek-blog/chrome-90.png" alt="" /></a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="http://mikegrace.s3.amazonaws.com/geek-blog/possible-facebook-friend-stats-thingy/Facebook_Possible_Friend_Statistical_Graph_Thingy.xpi">Download Firefox Extension</a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="http://mikegrace.s3.amazonaws.com/geek-blog/possible-facebook-friend-stats-thingy/Facebook_Possible_Friend_Statistical_Graph_Thingy.xpi"><img style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://mikegrace.s3.amazonaws.com/geek-blog/firefox-90.png" alt="" /></a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;">The app will put a button on the Friend Finder page which will allow you to view a graph based on the currently loaded possible friends.</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/possible-facebook-friend-stats-thingy/Screen%20shot%202011-02-20%20at%206.22.20%20PM.png" alt="" width="429" height="315" /></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;">Clicking on the &#8220;Show awesome possible friend chart!&#8221; button will reveal the awesome possible friend chart.</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/possible-facebook-friend-stats-thingy/Screen%20shot%202011-02-20%20at%206.23.58%20PM.png" alt="" width="660" height="478" /></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;">I will be putting up the general findings soon at <a href="http://facebookfriendfinderstats.michaelgrace.org/">http://facebookfriendfinderstats.michaelgrace.org/</a>. :)</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/02/facebook-possible-friend-statistical-graph-thingy/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>YouTube Refreshed Kynetx App</title>
		<link>http://geek.michaelgrace.org/2011/01/youtube-refreshed-kynetx-app/</link>
		<comments>http://geek.michaelgrace.org/2011/01/youtube-refreshed-kynetx-app/#comments</comments>
		<pubDate>Sun, 30 Jan 2011 00:13:42 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Add-on]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1632</guid>
		<description><![CDATA[My friends and I want a cleaner version of YouTube to use. One which doesn&#8217;t have lame and time wasting suggested videos, pointless comments, and lots of clutter. Thus, I have created the YouTube Refreshed Kynetx app. The app currently works on the main page of YouTube and individual video pages. Before: After: Before: After: [...]]]></description>
			<content:encoded><![CDATA[<p>My friends and I want a cleaner version of YouTube to use. One which doesn&#8217;t have lame and time wasting suggested videos, pointless comments, and lots of clutter. Thus, I have created the YouTube Refreshed Kynetx app. The app currently works on the main page of YouTube and individual video pages.</p>
<p>Before:</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/youtube-main.png" alt="" width="650" height="514" /></p>
<p>After:</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/youtube-refreshed-main.png" alt="" width="650" height="514" /></p>
<p>Before:</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/youtube-video.png" alt="" width="650" height="514" /></p>
<p>After:</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/youtube-video-refreshed.png" alt="" width="650" height="514" /></p>
<p><a href="http://mikegrace.s3.amazonaws.com/geek-blog/youtube-my-way.crx">Download Chrome Extension</a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="http://mikegrace.s3.amazonaws.com/geek-blog/youtube-my-way.crx"><img style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://mikegrace.s3.amazonaws.com/geek-blog/chrome-90.png" alt="" /></a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="http://mikegrace.s3.amazonaws.com/geek-blog/youtube-my-way.xpi">Download Firefox Extension</a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="http://mikegrace.s3.amazonaws.com/geek-blog/youtube-my-way.xpi"><img style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://mikegrace.s3.amazonaws.com/geek-blog/firefox-90.png" alt="" /></a></p>
<address><a href="http://www.iconfinder.com/icondetails/49221/256/social_youtube_icon">youtube icon</a> </address>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/01/youtube-refreshed-kynetx-app/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Interview With KSL!</title>
		<link>http://geek.michaelgrace.org/2011/01/interview-with-ksl/</link>
		<comments>http://geek.michaelgrace.org/2011/01/interview-with-ksl/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 22:17:38 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Add-on]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1627</guid>
		<description><![CDATA[I got interviewed on KSL today on The Browser radio show about one of my Kynetx Apps that I built to filter out foul language on Twitter.com You can find the extensions at http://geek.michaelgrace.org/2011/01/foul-fowl-control-kynetx-app-for-twitter-com/ For a list of other interesting Apps/browser extensions that I and others have built for twitter, check out this blog post [...]]]></description>
			<content:encoded><![CDATA[<p>I got interviewed on KSL today on The Browser radio show about one of my Kynetx Apps that I built to filter out foul language on Twitter.com You can find the extensions at <a href="http://geek.michaelgrace.org/2011/01/foul-fowl-control-kynetx-app-for-twitter-com/">http://geek.michaelgrace.org/2011/01/foul-fowl-control-kynetx-app-for-twitter-com/</a></p>
<p>For a list of other interesting Apps/browser extensions that I and others have built for twitter, check out this blog post by Kynetx</p>
<p><span style="color: #333333;"><a href="http://code.kynetx.com/2011/01/21/5-insanely-useful-browser-apps-for-twitter-com/">5 Insanely useful browser apps for Twitter.com</a></span></p>
<p>or <a href="http://geek.michaelgrace.org/category/kynetx/">my index of Kynetx apps on my blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/01/interview-with-ksl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Keywordicon &#8211; Experimental Twitter Kynetx App</title>
		<link>http://geek.michaelgrace.org/2011/01/keywordicon-experimental-twitter-kynetx-app/</link>
		<comments>http://geek.michaelgrace.org/2011/01/keywordicon-experimental-twitter-kynetx-app/#comments</comments>
		<pubDate>Mon, 24 Jan 2011 20:53:32 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Add-on]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1623</guid>
		<description><![CDATA[Keywordicon is an experimental Kynetx app that I built to modify the Twitter.com interface. It is based on the same code that runs my recently published tweet filter Kynetx app. I thought it would be interesting to annotate each tweet with icons based on key words found in the tweet&#8230; thus the name keywordicon (pronounced [...]]]></description>
			<content:encoded><![CDATA[<p>Keywordicon is an experimental Kynetx app that I built to modify the Twitter.com interface. It is based on the same code that runs my recently published <a href="http://geek.michaelgrace.org/2011/01/tweet-filter-kynetx-app/">tweet filter Kynetx app</a>. I thought it would be interesting to annotate each tweet with icons based on key words found in the tweet&#8230; thus the name keywordicon (pronounced like favicon but with 33% more syllables). I don&#8217;t expect very many people to use it but it&#8217;s an interesting concept and it has been fun to use it and see how it changes the way I am able to skim through my tweet stream and stop at places that are interesting to me.</p>
<h3>Action shots!</h3>
<p>App loaded in meta tray (was going to have settings here but decided to keep it simple w/out settings)</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/keywordicon-in-twitter-meta-tray.png" alt="" width="530" height="146" /></p>
<p>Tweet annotated with keywordicon</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/keywordicon-in-action.png" alt="" width="564" height="115" /></p>
<p>See the app in action through moving pictures!</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="560" height="340" 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://www.youtube-nocookie.com/v/K3BacZP70xI?fs=1&amp;hl=en_US&amp;rel=0&amp;hd=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="560" height="340" src="http://www.youtube-nocookie.com/v/K3BacZP70xI?fs=1&amp;hl=en_US&amp;rel=0&amp;hd=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://mikegrace.s3.amazonaws.com/geek-blog/keywordicon.crx">Download Chrome Extension</a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="http://mikegrace.s3.amazonaws.com/geek-blog/keywordicon.crx"><img style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://mikegrace.s3.amazonaws.com/geek-blog/chrome-90.png" alt="" /></a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="http://mikegrace.s3.amazonaws.com/geek-blog/keywordicon.xpi">Download Firefox Extension</a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="http://mikegrace.s3.amazonaws.com/geek-blog/keywordicon.xpi"><img style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://mikegrace.s3.amazonaws.com/geek-blog/firefox-90.png" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/01/keywordicon-experimental-twitter-kynetx-app/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tweet Filter Kynetx App</title>
		<link>http://geek.michaelgrace.org/2011/01/tweet-filter-kynetx-app/</link>
		<comments>http://geek.michaelgrace.org/2011/01/tweet-filter-kynetx-app/#comments</comments>
		<pubDate>Sun, 23 Jan 2011 01:18:29 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Add-on]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1618</guid>
		<description><![CDATA[This is another Kynetx App that I have built to enhance the Twitter.com web interface. This app allows you to hide or highlight tweets based on words found in each tweet. The app also remembers your list of word between each use. Just add a list of words separated by commas with no spaces and [...]]]></description>
			<content:encoded><![CDATA[<p>This is another Kynetx App that I have built to enhance the Twitter.com web interface. This app allows you to hide or highlight tweets based on words found in each tweet. The app also remembers your list of word between each use. Just add a list of words separated by commas with no spaces and click update!</p>
<p>Demo video:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="560" height="340" 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://www.youtube-nocookie.com/v/GewIkel9UuE?fs=1&amp;hl=en_US&amp;rel=0&amp;hd=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="560" height="340" src="http://www.youtube-nocookie.com/v/GewIkel9UuE?fs=1&amp;hl=en_US&amp;rel=0&amp;hd=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="https://mikegrace.s3.amazonaws.com/geek-blog/Tweet_Filter_Kynetx_App.crx">Download Chrome Extension</a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="https://mikegrace.s3.amazonaws.com/geek-blog/Tweet_Filter_Kynetx_App.crx"><img style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://mikegrace.s3.amazonaws.com/geek-blog/chrome-90.png" alt="" /></a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="https://mikegrace.s3.amazonaws.com/geek-blog/Tweet_Filter_Kynetx_App.xpi">Download Firefox Extension</a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="https://mikegrace.s3.amazonaws.com/geek-blog/Tweet_Filter_Kynetx_App.xpi"><img style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://mikegrace.s3.amazonaws.com/geek-blog/firefox-90.png" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/01/tweet-filter-kynetx-app/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Foul Fowl Control Kynetx App For Twitter.com</title>
		<link>http://geek.michaelgrace.org/2011/01/foul-fowl-control-kynetx-app-for-twitter-com/</link>
		<comments>http://geek.michaelgrace.org/2011/01/foul-fowl-control-kynetx-app-for-twitter-com/#comments</comments>
		<pubDate>Fri, 21 Jan 2011 04:48:10 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Add-on]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1611</guid>
		<description><![CDATA[I have long longed for the ability to not see foul language in my Twitter stream. Why I didn&#8217;t think to create a Kynetx app before now to do this very thing is beyond me. Today a friend of mine on Twitter mentioned that he also wished there was a way to filter or hide [...]]]></description>
			<content:encoded><![CDATA[<p>I have long longed for the ability to not see foul language in my Twitter stream. Why I didn&#8217;t think to create a Kynetx app before now to do this very thing is beyond me. Today a friend of mine on Twitter mentioned that he also wished there was a way to filter or hide foul language in tweets so I decided I would build this app. I decided to build the app so that it would replace foul words with asterisks instead of just hiding the tweet from the tweet stream, which I could build another app to do or I could have a setting to change the functionality. I also don&#8217;t have a way for new words to be censored other than you contacting me and asking me to add a word to the list. I don&#8217;t really want an inbox full of foul language but if you see that my app has missed something that you think should be hidden then let me know via <a href="http://twitter.com/MikeGrace">twitter</a> or <a href="http://www.google.com/profiles/themikegrace/contactme?continue=http://www.google.com/profiles/themikegrace">email</a> and I&#8217;ll probably add it.</p>
<p>I&#8217;m not going to show before and after action shots but I can show you how the app behaves when I was testing it with a list of random words:</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/foul-fowl-control.png" alt="" width="505" height="269" /></p>
<p><a href="http://mikegrace.s3.amazonaws.com/geek-blog/Foul_Fowl_Control.crx">Download Chrome Extension</a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="http://mikegrace.s3.amazonaws.com/geek-blog/Foul_Fowl_Control.crx"><img style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://mikegrace.s3.amazonaws.com/geek-blog/chrome-90.png" alt="" /></a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="http://mikegrace.s3.amazonaws.com/geek-blog/Foul_Fowl_Control.xpi">Download Firefox Extension</a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="http://mikegrace.s3.amazonaws.com/geek-blog/Foul_Fowl_Control.xpi"><img style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://mikegrace.s3.amazonaws.com/geek-blog/firefox-90.png" alt="" /></a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a href="http://mikegrace.s3.amazonaws.com/geek-blog/Foul_Fowl_Control_Setup.exe">Download Internet Explorer Extension</a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a href="http://mikegrace.s3.amazonaws.com/geek-blog/Foul_Fowl_Control_Setup.exe"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/ie-90.png" alt="" width="90" height="90" /></a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;">
<p>If you are interested in seeing the code that makes this app work the way it does, you can check it out over at <a href="http://kynetxappaday.wordpress.com/2011/01/21/find-and-replace-words-in-twitter-tweet-stream/">http://kynetxappaday.wordpress.com/2011/01/21/find-and-replace-words-in-twitter-tweet-stream/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/01/foul-fowl-control-kynetx-app-for-twitter-com/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Standup Meeting Kynetx App</title>
		<link>http://geek.michaelgrace.org/2011/01/standup-meeting-kynetx-app/</link>
		<comments>http://geek.michaelgrace.org/2011/01/standup-meeting-kynetx-app/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 22:30:04 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1595</guid>
		<description><![CDATA[I&#8217;m really glad I had some time to build another Kynetx app that the Kynetx team will be able to use to be more efficient with their time. I had the idea a few days ago and now that idea is a reality. Here is what I explained my idea to be on my other [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m really glad I had some time to build another Kynetx app that the Kynetx team will be able to use to be more efficient with their time. <a href="http://mikegrace.tumblr.com/post/2685369401/recent-kynetx-app-ideas-and-thoughts">I had the idea a few days ago</a> and now that idea is a reality. Here is what I explained my idea to be on my other blog</p>
<blockquote><p>At work we have standup meetings each morning to discuss roadblocks and the plan for the day. Often, most of the time is spent relating what is going to be done for the day which isn’t working very well. I want to build an app that each employee would install that would remind them each morning to submit their short list of what they are working on for the day and would show what everyone else is working on for the day. A user could dismiss the promptings for the day on all sites and could see the list anytime by going to a predefined url where the days tasks and road blocks would be listed. This app would probably use a Google spreadsheet to facilitate this functionality because it would be nice to have this information recorded even though it could be done through app variables.</p></blockquote>
<p>Demo video:</p>
<p><object width="560" height="340"><param name="movie" value="http://www.youtube-nocookie.com/v/WssA03UZJGM?fs=1&amp;hl=en_US&amp;rel=0&amp;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube-nocookie.com/v/WssA03UZJGM?fs=1&amp;hl=en_US&amp;rel=0&amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></p>
<p>Here are some action shots showing how the app works:</p>
<p>Installing the browser extension and loading a page for the first time. The time happens to be between 6 am and 10 am. You&#8217;ll notice that the app runs on whatever url you are currently on. It doesn&#8217;t look so great if it happens to be a site that has a lot of crazy stuff going on like Google reader or flash sites.</p>
<p><a href="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-13-at-12.02.58-PM.png"><img class="alignnone size-medium wp-image-1596" title="Screen shot 2011-01-13 at 12.02.58 PM" src="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-13-at-12.02.58-PM-300x280.png" alt="Screen shot 2011-01-13 at 12.02.58 PM" width="300" height="280" /></a></p>
<p>Once the user submits the day&#8217;s standup items the app confirms submission and removes itself from the page</p>
<p><a href="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-13-at-12.03.19-PM.png"><img class="alignnone size-medium wp-image-1599" title="Screen shot 2011-01-13 at 12.03.19 PM" src="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-13-at-12.03.19-PM-300x199.png" alt="Screen shot 2011-01-13 at 12.03.19 PM" width="300" height="199" /></a></p>
<p>On all pages that the user visits between the hours of 6 am and 10 am a little icon will be annotated in the bottom right corner of the browser window.</p>
<p><a href="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-13-at-12.03.24-PM.png"><img class="alignnone size-medium wp-image-1600" title="Screen shot 2011-01-13 at 12.03.24 PM" src="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-13-at-12.03.24-PM-300x280.png" alt="Screen shot 2011-01-13 at 12.03.24 PM" width="300" height="280" /></a></p>
<p><a href="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-13-at-12.03.24-PM1.png"><img class="alignnone size-full wp-image-1601" title="Screen shot 2011-01-13 at 12.03.24 PM" src="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-13-at-12.03.24-PM1.png" alt="Screen shot 2011-01-13 at 12.03.24 PM" width="199" height="175" /></a></p>
<p>When a user hovers over the annotation, it will reveal two action buttons. The list button will show a list of everyone&#8217;s submitted standup items for the day. The x button will removed the annotation from the page if it is in the way.</p>
<p><a href="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-13-at-12.03.35-PM.png"><img class="alignnone size-full wp-image-1602" title="Screen shot 2011-01-13 at 12.03.35 PM" src="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-13-at-12.03.35-PM.png" alt="Screen shot 2011-01-13 at 12.03.35 PM" width="131" height="141" /></a></p>
<p>When a user clicks on the list button, the standup items will be listed in a notify and the annotation will remove itself from the current page.</p>
<p><a href="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-13-at-12.03.42-PM.png"><img class="alignnone size-medium wp-image-1603" title="Screen shot 2011-01-13 at 12.03.42 PM" src="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-13-at-12.03.42-PM-300x223.png" alt="Screen shot 2011-01-13 at 12.03.42 PM" width="300" height="223" /></a></p>
<p>After the first time a user has used the app, it will remember the user&#8217;s name so the user doesn&#8217;t have to enter it again.</p>
<p><a href="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-13-at-12.04.41-PM.png"><img class="alignnone size-full wp-image-1604" title="Screen shot 2011-01-13 at 12.04.41 PM" src="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-13-at-12.04.41-PM.png" alt="Screen shot 2011-01-13 at 12.04.41 PM" width="383" height="376" /></a></p>
<p>I won&#8217;t be sharing the extensions I built for the Kynetx team but I plan on sharing the code along with explinations on www.kynetxappaday.wordpress.com soon. Hope this app has gotten you thinking about ways you could use something similar or maybe completely different apps you could build using Kynetx.</p>
<h2 style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; vertical-align: baseline; clear: both; font-weight: normal; background-position: initial initial; background-repeat: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;">Questions?</h2>
<p><a style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; vertical-align: baseline; color: #0066cc; text-decoration: none; background-position: initial initial; background-repeat: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;" href="http://docs.kynetx.com/">KRL Documentation</a><br />
<a style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; vertical-align: baseline; color: #0066cc; text-decoration: none; background-position: initial initial; background-repeat: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;" href="http://stackoverflow.com/questions/ask?tags=KRL">Ask KRL question on StackOverflow.com</a><br />
<a style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; vertical-align: baseline; color: #0066cc; text-decoration: none; background-position: initial initial; background-repeat: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;" href="http://twitter.com/MikeGrace">Ask @MikeGrace on Twitter</a><br />
<a style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; vertical-align: baseline; color: #0066cc; text-decoration: none; background-position: initial initial; background-repeat: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;" href="http://twitter.com/Kynetx">Ask @Kynetx on Twitter</a><br />
<a style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; vertical-align: baseline; color: #0066cc; text-decoration: none; background-position: initial initial; background-repeat: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;" href="http://code.kynetx.com/">Read the latest on our dev blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/01/standup-meeting-kynetx-app/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Shun The Facebook Likes Kynetx App</title>
		<link>http://geek.michaelgrace.org/2011/01/shun-the-facebook-likes-kynetx-app/</link>
		<comments>http://geek.michaelgrace.org/2011/01/shun-the-facebook-likes-kynetx-app/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 05:36:34 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Social Networking]]></category>
		<category><![CDATA[Add-on]]></category>
		<category><![CDATA[Browser]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1584</guid>
		<description><![CDATA[I had a friend on Twitter that voiced his frustration with having to see many &#8216;likes&#8217; on Facebook when he doesn&#8217;t care about any of them. I took that as a challenge and built a Kynetx app that would fix that problem. Action shots: Status Update Before Status Update After Photo Before Photo After Download [...]]]></description>
			<content:encoded><![CDATA[<p>I had a friend on Twitter that voiced his frustration with having to see many &#8216;likes&#8217; on Facebook when he doesn&#8217;t care about any of them.</p>
<p><a href="http://twitter.com/lnxwalt"><img class="alignnone size-full wp-image-1591" title="Screen shot 2011-01-12 at 10.33.55 PM" src="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-12-at-10.33.55-PM.png" alt="Screen shot 2011-01-12 at 10.33.55 PM" width="406" height="162" /></a></p>
<p>I took that as a challenge and built a Kynetx app that would fix that problem.</p>
<p>Action shots:</p>
<p><strong>Status Update Before </strong></p>
<p><strong><a href="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-12-at-10.29.56-PM.png"><img class="alignnone size-full wp-image-1586" title="Screen shot 2011-01-12 at 10.29.56 PM" src="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-12-at-10.29.56-PM.png" alt="Screen shot 2011-01-12 at 10.29.56 PM" width="501" height="132" /></a></strong></p>
<p><strong>Status Update After</strong></p>
<p><strong><a href="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-12-at-10.30.16-PM.png"><img class="alignnone size-full wp-image-1587" title="Screen shot 2011-01-12 at 10.30.16 PM" src="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-12-at-10.30.16-PM.png" alt="Screen shot 2011-01-12 at 10.30.16 PM" width="517" height="123" /></a></strong></p>
<p><strong>Photo Before</strong></p>
<p><a href="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-12-at-10.32.01-PM.png"><img class="alignnone size-full wp-image-1588" title="Screen shot 2011-01-12 at 10.32.01 PM" src="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-12-at-10.32.01-PM.png" alt="Screen shot 2011-01-12 at 10.32.01 PM" width="320" height="272" /></a></p>
<p><strong>Photo After</strong></p>
<p><strong><a href="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-12-at-10.32.16-PM.png"><img class="alignnone size-full wp-image-1589" title="Screen shot 2011-01-12 at 10.32.16 PM" src="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-12-at-10.32.16-PM.png" alt="Screen shot 2011-01-12 at 10.32.16 PM" width="307" height="284" /></a></strong></p>
<p><strong><br />
</strong></p>
<p><a href="http://mikegrace.s3.amazonaws.com/geek-blog/shun-the-facebook-likes.crx">Download Chrome Extension</a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="http://mikegrace.s3.amazonaws.com/geek-blog/shun-the-facebook-likes.crx"><img style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://mikegrace.s3.amazonaws.com/geek-blog/chrome-90.png" alt="" /></a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="http://mikegrace.s3.amazonaws.com/geek-blog/shun-the-facebook-likes.xpi">Download Firefox Extension</a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="http://mikegrace.s3.amazonaws.com/geek-blog/shun-the-facebook-likes.xpi"><img style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://mikegrace.s3.amazonaws.com/geek-blog/firefox-90.png" alt="" /></a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;">
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/01/shun-the-facebook-likes-kynetx-app/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>KRL Stack Overflow Question Watcher For Kynetx Team</title>
		<link>http://geek.michaelgrace.org/2011/01/krl-stack-overflow-question-watcher-for-kynetx-team/</link>
		<comments>http://geek.michaelgrace.org/2011/01/krl-stack-overflow-question-watcher-for-kynetx-team/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 06:04:55 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Add-on]]></category>
		<category><![CDATA[Browser]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1573</guid>
		<description><![CDATA[I built this app based on an idea I got this morning and it has turned out great! I love it! The app is built for the Kynetx team so I wont be sharing the extension with the public but I have no qualms with sharing how awesome it is. The app allows each Kynetx [...]]]></description>
			<content:encoded><![CDATA[<p>I built this app based on an <a href="http://mikegrace.tumblr.com/post/2701095709/stack-overflow-kynetx-app-idea-01-11-11">idea I got this morning</a> and it has turned out great! I love it!</p>
<p>The app is built for the Kynetx team so I wont be sharing the extension with the public but I have no qualms with sharing how awesome it is. The app allows each Kynetx team member to see who on the team has viewed the KRL tagged question on Stack Overflow. A Kynetx team member can then mark that they are currently working on an answer for the question or that they have &#8220;passed&#8221; on the question. A simple tool to help coordinate the teams efforts in answering the public&#8217;s questions about KRL on Stack Overflow.</p>
<p>Action shots:</p>
<p><a href="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-11-at-10.46.28-PM.png"><img class="alignnone size-full wp-image-1574" title="Screen shot 2011-01-11 at 10.46.28 PM" src="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-11-at-10.46.28-PM.png" alt="Screen shot 2011-01-11 at 10.46.28 PM" width="575" height="272" /></a></p>
<p><a href="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-11-at-11.00.27-PM.png"><img class="alignnone size-full wp-image-1575" title="Screen shot 2011-01-11 at 11.00.27 PM" src="http://geek.michaelgrace.org/wp-content/uploads/2011/01/Screen-shot-2011-01-11-at-11.00.27-PM.png" alt="Screen shot 2011-01-11 at 11.00.27 PM" width="247" height="175" /></a></p>
<h2>Questions</h2>
<ul>
<li>What do you think of this Kynetx app?</li>
<li>Does this app give you any ideas?</li>
<li>Could you or your company use a tool like this?</li>
</ul>
<p>.</p>
<p>: )</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/01/krl-stack-overflow-question-watcher-for-kynetx-team/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Old School Style Retweets Via Kynetx App</title>
		<link>http://geek.michaelgrace.org/2011/01/old-school-style-retweets-via-kynetx-app/</link>
		<comments>http://geek.michaelgrace.org/2011/01/old-school-style-retweets-via-kynetx-app/#comments</comments>
		<pubDate>Sun, 09 Jan 2011 03:12:25 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1565</guid>
		<description><![CDATA[Twitter came out with a new web interface&#8230; great! Ooooh! A retweet button. Wait!! What is this? Gah! I think the native retweet is great sometimes and other times it just doesn&#8217;t fit. I got really sick of doing the copy and paste dance so I built a Kynetx app that adds the &#8220;RT&#8221; functionality [...]]]></description>
			<content:encoded><![CDATA[<p>Twitter came out with a new web interface&#8230; great! Ooooh! A retweet button. Wait!! What is this? Gah!</p>
<p>I think the native retweet is great sometimes and other times it just doesn&#8217;t fit. I got really sick of doing the copy and paste dance so I built a Kynetx app that adds the &#8220;RT&#8221; functionality that I want. The RT doesn&#8217;t automatically get sent out because often times I need to shorten up  because it doesn&#8217;t fit within the 140 character limit.</p>
<p><strong><span style="text-decoration: underline;">Action shots</span></strong></p>
<p>RT button:</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/old-school-retweet-action-shot.png" alt="" width="558" height="126" /></p>
<p>After clicking RT button:</p>
<p><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/old-school-retweet-action-shot-1.png" alt="" width="529" height="219" /></p>
<p>Get the Google Chrome or Firefox extensions below</p>
<p><a href="http://mikegrace.s3.amazonaws.com/geek-blog/old-school-retweet.crx">Download Chrome Extension</a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="http://mikegrace.s3.amazonaws.com/geek-blog/old-school-retweet.crx"><img style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://mikegrace.s3.amazonaws.com/geek-blog/chrome-90.png" alt="" /></a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="http://mikegrace.s3.amazonaws.com/geek-blog/old-school-retweet.xpi">Download Firefox Extension</a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px;" href="http://mikegrace.s3.amazonaws.com/geek-blog/old-school-retweet.xpi"><img style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://mikegrace.s3.amazonaws.com/geek-blog/firefox-90.png" alt="" /></a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a href="http://mikegrace.s3.amazonaws.com/geek-blog/old-school-retweet_Setup.exe">Download Internet Explorer Extension</a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;"><a href="http://mikegrace.s3.amazonaws.com/geek-blog/old-school-retweet_Setup.exe"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/ie-90.png" alt="" width="90" height="90" /></a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px;">
<p>You can view the code that runs this app along with a short explanation on how it works over at <a href="http://kynetxappaday.wordpress.com/2011/01/13/day-32-old-school-twitter-retweet/">http://kynetxappaday.wordpress.com/2011/01/13/day-32-old-school-twitter-retweet/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/01/old-school-style-retweets-via-kynetx-app/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Load XKCD Inline on Twitter</title>
		<link>http://geek.michaelgrace.org/2011/01/load-xkcd-inline-on-twitter/</link>
		<comments>http://geek.michaelgrace.org/2011/01/load-xkcd-inline-on-twitter/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 15:10:37 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1557</guid>
		<description><![CDATA[A friend on Twitter, Andrew Hedges, mentioned this morning Wishing @Twitter would add support for showing XKCD comics inline on twitter.com I agree that it would be nice to have each XKCD comic load inline. Until it is supported, I thought I would bang out a Kynetx app to do it. Only took me an hour [...]]]></description>
			<content:encoded><![CDATA[<p>A friend on Twitter, Andrew Hedges, <a href="http://twitter.com/#!/segdeha/status/23272741578735616">mentioned this morning</a></p>
<blockquote><p>Wishing @<a style="color: #105ad1; text-decoration: none; padding: 0px; margin: 0px; border: 0px initial initial;" rel="nofollow" href="http://twitter.com/Twitter">Twitter</a> would add support for showing XKCD comics inline on twitter.com</p></blockquote>
<p>I agree that it would be nice to have each XKCD comic load inline. Until it is supported, I thought I would bang out a Kynetx app to do it. Only took me an hour while helping my wife get ready for work and out the door so I feel pretty good about it. There are a few things I could add to it but it works and it&#8217;s simple. You can use the app as a Google Chrome extension or a Firefox Extension.</p>
<p><a href="http://mikegrace.s3.amazonaws.com/geek-blog/xkcd-on-twitter.crx">Download Chrome Extension</a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px; border: 0px initial initial;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px; border: 0px initial initial;" href="http://mikegrace.s3.amazonaws.com/geek-blog/xkcd-on-twitter.crx"><img style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://mikegrace.s3.amazonaws.com/geek-blog/chrome.png" alt="" width="358" height="358" /></a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px; border: 0px initial initial;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px; border: 0px initial initial;" href="http://mikegrace.s3.amazonaws.com/geek-blog/xkcd-on-twitter.xpi">Download Firefox Extension</a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px; border: 0px initial initial;"><a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; color: #208bab; text-decoration: none; padding: 0px; margin: 0px; border: 0px initial initial;" href="http://mikegrace.s3.amazonaws.com/geek-blog/xkcd-on-twitter.xpi"><img style="outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://mikegrace.s3.amazonaws.com/geek-blog/firefox-512.png" alt="" width="358" height="358" /></a></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px; border: 0px initial initial;">Action shot!</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 27px; padding-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 20px; font-family: inherit; vertical-align: baseline; margin: 0px; border: 0px initial initial;"><img class="alignnone" src="http://mikegrace.s3.amazonaws.com/geek-blog/xkcd-on-twitter-action-shot.png" alt="" width="533" height="512" /></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2011/01/load-xkcd-inline-on-twitter/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Minimal One True Fan</title>
		<link>http://geek.michaelgrace.org/2010/12/minimal-one-true-fan/</link>
		<comments>http://geek.michaelgrace.org/2010/12/minimal-one-true-fan/#comments</comments>
		<pubDate>Tue, 28 Dec 2010 20:11:36 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Add-on]]></category>
		<category><![CDATA[Browser]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1538</guid>
		<description><![CDATA[I am a BIG fan of One True Fan. Maybe even &#8220;the&#8221; one true fan of One True Fan. ; ) I&#8217;ve noticed recently that I have been hiding the One True Fan bar a lot for various reasons. I really love the bar but I don&#8217;t always want to see it, but at the [...]]]></description>
			<content:encoded><![CDATA[<p>I am a BIG fan of <a href="http://onetruefan.com/MikeGrace">One True Fan</a>. Maybe even &#8220;the&#8221; one true fan of One True Fan. ; )</p>
<p><a href="http://geek.michaelgrace.org/wp-content/uploads/2010/12/one-true-fan-me.jpg"><img class="alignnone size-full wp-image-1551" title="one-true-fan-me" src="http://geek.michaelgrace.org/wp-content/uploads/2010/12/one-true-fan-me.jpg" alt="one-true-fan-me" width="400" height="300" /></a></p>
<p>I&#8217;ve noticed recently that I have been hiding the One True Fan bar a lot for various reasons. I really love the bar but I don&#8217;t always want to see it, but at the same time I always want it to be there. So&#8230; I built a Kynetx app that solves my problem and maybe others will find it useful also.</p>
<p>Minimal One True Fan is a Chrome and Firefox Extension that</p>
<ol>
<li> looks for the One True Fan bar on the page</li>
<li>hides the bar</li>
<li>takes the checked in status button and places it in the bottom left corner of the page</li>
<li>clicking on the status button will bring the bar back</li>
</ol>
<p><a href="http://www.youtube.com/watch?v=wVyfgy4TCOQ&amp;hd=1">See the Minimal One True Fan Kynetx app and the One True Fan extensions in action!</a></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="560" height="340" 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://www.youtube-nocookie.com/v/wVyfgy4TCOQ?fs=1&amp;hl=en_US&amp;rel=0&amp;hd=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="560" height="340" src="http://www.youtube-nocookie.com/v/wVyfgy4TCOQ?fs=1&amp;hl=en_US&amp;rel=0&amp;hd=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://mikegrace.s3.amazonaws.com/geek-blog/Minimal_One_True_Fan.crx">Download Chrome Extension</p>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/chrome.png" alt="" /></a></p>
<p><a href="http://mikegrace.s3.amazonaws.com/geek-blog/Minimal_One_True_Fan.xpi">Download Firefox Extension</p>
<p><img src="http://mikegrace.s3.amazonaws.com/geek-blog/firefox-512.png" alt="" /></a></p>
<p>Update 01/04/2011</p>
<p>Updated the app to also show the avatar of the current One True Fan of the current site because who doesn&#8217;t love to see if they are the One True Fan? : D</p>
<p><a href="http://geek.michaelgrace.org/wp-content/uploads/2010/12/Screen-shot-2011-01-04-at-12.13.24-PM.png"><img class="alignnone size-full wp-image-1555" title="Screen shot 2011-01-04 at 12.13.24 PM" src="http://geek.michaelgrace.org/wp-content/uploads/2010/12/Screen-shot-2011-01-04-at-12.13.24-PM.png" alt="Screen shot 2011-01-04 at 12.13.24 PM" width="569" height="406" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2010/12/minimal-one-true-fan/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Remove Auto-Complete URL Suggestion on cr-48 Google Chrome OS</title>
		<link>http://geek.michaelgrace.org/2010/12/remove-auto-complete-url-suggestion-on-cr-48-google-chrome-os/</link>
		<comments>http://geek.michaelgrace.org/2010/12/remove-auto-complete-url-suggestion-on-cr-48-google-chrome-os/#comments</comments>
		<pubDate>Mon, 27 Dec 2010 17:50:28 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Chrome]]></category>
		<category><![CDATA[cr-48]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[How to]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Keyboard]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1535</guid>
		<description><![CDATA[The other day I misstyped a URL and now Google Chrome auto suggests the wrong URL every time. To remove this auto suggestion on cr-48 Start typing the URL so it will auto suggest it Use keyboard shortcut ctrl + alt + backspace Doing this immediately removed the suggestion from my Chrome history on my cr-48 [...]]]></description>
			<content:encoded><![CDATA[<p>The other day I misstyped a URL and now Google Chrome auto suggests the wrong URL every time. To remove this auto suggestion on cr-48</p>
<ol>
<li>Start typing the URL so it will auto suggest it</li>
<li>Use keyboard shortcut <strong><em>ctrl + alt + backspace </em></strong></li>
</ol>
<p>Doing this immediately removed the suggestion from my Chrome history on my cr-48 for Chrome OS</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2010/12/remove-auto-complete-url-suggestion-on-cr-48-google-chrome-os/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Help Me Focus Kynetx App</title>
		<link>http://geek.michaelgrace.org/2010/12/help-me-focus-kynetx-app/</link>
		<comments>http://geek.michaelgrace.org/2010/12/help-me-focus-kynetx-app/#comments</comments>
		<pubDate>Sat, 11 Dec 2010 01:38:53 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Add-on]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1514</guid>
		<description><![CDATA[I&#8217;ve gotten sick of constantly going to web pages where the main thing I want to do is a search and the site doesn&#8217;t put my cursor focus in the search input box. Gah! I have decided to make a Kynetx app that helps me with this annoyance and you are free to use it [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve gotten sick of constantly going to web pages where the main thing I want to do is a search and the site doesn&#8217;t put my cursor focus in the search input box. Gah!</p>
<p>I have decided to make a Kynetx app that helps me with this annoyance and you are free to use it and <a href="https://spreadsheets.google.com/viewform?formkey=dHpvMzZtcEhES2ZJeDlwQXpMTTRkV1E6MQ">give feedback </a>(things like, &#8216;I wish it worked on this site&#8217; or &#8216;Dude! This is awesome!&#8217;).</p>
<p><a href="https://gist.github.com/737075">Example Code</a></p>
<p>*It is currently only helping on a few sites but I will be adding sites as I run across them and people <a href="https://spreadsheets.google.com/viewform?formkey=dHpvMzZtcEhES2ZJeDlwQXpMTTRkV1E6MQ">suggest them</a>.</p>
<p>If you have the extension installed and working, you can see a list of domains that the app is helping you focus on at the end of this post inserted by the extension.</p>
<h1><a href="http://kynetx-apps.s3.amazonaws.com/help-me-focus/help-me-focus.crx">Download Chrome Extension</a></h1>
<p><a href="http://kynetx-apps.s3.amazonaws.com/help-me-focus/help-me-focus.crx"><img class="alignnone size-full wp-image-1522" title="1292030774_Downloads" src="http://geek.michaelgrace.org/wp-content/uploads/2010/12/1292030774_Downloads.png" alt="1292030774_Downloads" width="128" height="128" /></a></p>
<h1><a href="http://kynetx-apps.s3.amazonaws.com/help-me-focus/help-me-focus.xpi">Download Firefox Extension</a></h1>
<p><a href="http://kynetx-apps.s3.amazonaws.com/help-me-focus/help-me-focus.xpi"><img class="alignnone size-full wp-image-1522" title="1292030774_Downloads" src="http://geek.michaelgrace.org/wp-content/uploads/2010/12/1292030774_Downloads.png" alt="1292030774_Downloads" width="128" height="128" /></a></p>
<p>Action shot before:</p>
<p><a href="http://geek.michaelgrace.org/wp-content/uploads/2010/12/Screen-shot-2010-12-10-at-6.21.12-PM.png"><img class="size-medium wp-image-1516 alignnone" title="Screen shot 2010-12-10 at 6.21.12 PM" src="http://geek.michaelgrace.org/wp-content/uploads/2010/12/Screen-shot-2010-12-10-at-6.21.12-PM-300x184.png" alt="Screen shot 2010-12-10 at 6.21.12 PM" width="300" height="184" /></a></p>
<p>Action shot after:</p>
<p><a href="http://geek.michaelgrace.org/wp-content/uploads/2010/12/Screen-shot-2010-12-10-at-6.22.06-PM.png"><img class="size-medium wp-image-1517 alignnone" title="Screen shot 2010-12-10 at 6.22.06 PM" src="http://geek.michaelgrace.org/wp-content/uploads/2010/12/Screen-shot-2010-12-10-at-6.22.06-PM-300x184.png" alt="Screen shot 2010-12-10 at 6.22.06 PM" width="300" height="184" /></a></p>
<h3>List of sites this extension is helping on</h3>
<p id="focus-list-of-sites">If you had the extension installed and running properly, you would see this replaced with a list of the sites that the extension is currently helping on</p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2010/12/help-me-focus-kynetx-app/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>GetGlue OneTrueFan Conflict Resolver Extension</title>
		<link>http://geek.michaelgrace.org/2010/12/getglue-onetruefan-conflict-resolver-extension/</link>
		<comments>http://geek.michaelgrace.org/2010/12/getglue-onetruefan-conflict-resolver-extension/#comments</comments>
		<pubDate>Sat, 04 Dec 2010 22:41:23 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[Kynetx]]></category>
		<category><![CDATA[Social Networking]]></category>
		<category><![CDATA[Add-on]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Chrome]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1503</guid>
		<description><![CDATA[I use both GetGlue and OneTrueFan chrome extensions and sometimes when they both load on a page they step on each other. So, because I want to use both and didn&#8217;t want to wait for OneTrueFan to fix the problem, I created a simple Kynetx app that runs as a browser extension and fixes the [...]]]></description>
			<content:encoded><![CDATA[<p>I use both <a href="http://getglue.com/">GetGlue</a> and <a href="http://onetruefan.com/MikeGrace">OneTrueFan</a> chrome extensions and sometimes <a href="http://goo.gl/EZY5r">when they both load on a page they step on each other</a>.</p>
<p>So, because I want to use both and didn&#8217;t want to wait for OneTrueFan to fix the problem, I created a simple <a href="http://www.kynetx.com/">Kynetx</a> app that runs as a browser extension and fixes the problem if it detects both on the page. : )</p>
<p><a href="http://mikegrace.s3.amazonaws.com/geek-blog/getglue-onetruefan-conflict-resolver.crx" target="_blank">DOWNLOAD CHROME EXTENSION</a></p>
<p>Action shots:</p>
<p style="text-align: center;"><img class="aligncenter size-medium wp-image-1504" title="Screen shot 2010-12-04 at 3.24.48 PM" src="http://geek.michaelgrace.org/wp-content/uploads/2010/12/Screen-shot-2010-12-04-at-3.24.48-PM-300x186.png" alt="Screen shot 2010-12-04 at 3.24.48 PM" width="300" height="186" /></p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1510" title="Screen shot 2010-12-04 at 3.24.49 PM" src="http://geek.michaelgrace.org/wp-content/uploads/2010/12/Screen-shot-2010-12-04-at-3.24.49-PM.png" alt="Screen shot 2010-12-04 at 3.24.49 PM" width="488" height="136" /></p>
<p style="text-align: center;">
<p>Kynetx app code:</p>
<p><script src="https://gist.github.com/728558.js"> </script></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2010/12/getglue-onetruefan-conflict-resolver-extension/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Creating Mac Keyboard Shortcuts</title>
		<link>http://geek.michaelgrace.org/2010/11/creating-mac-keyboard-shortcuts/</link>
		<comments>http://geek.michaelgrace.org/2010/11/creating-mac-keyboard-shortcuts/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 20:46:37 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Mac OS]]></category>
		<category><![CDATA[Keyboard]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1497</guid>
		<description><![CDATA[TextMate recently released an update that changed one of my favorite keyboard shortcuts. This event reminded me that Mac OS X has provided a nice way to create your own keyboard shortcut key bindings. To create your own keyboard shortcut for an application, you will need to know the exact name given in the application&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>TextMate recently released an update that changed one of my favorite keyboard shortcuts. This event reminded me that Mac OS X has provided a nice way to create your own keyboard shortcut key bindings. To create your own keyboard shortcut for an application, you will need to know the exact name given in the application&#8217;s menu.</p>
<h3>Example</h3>
<p>Creating new keyboard shortcut for changing tab in TextMate:<br />
1. Found action in app menu to assign keyboard shortcut to<br />
<img class="alignnone" src="https://mikegrace.s3.amazonaws.com/geek-blog/app-menu-action.png" alt="" /></p>
<p>2. Open System Preferences<br />
<img class="alignnone" src="https://mikegrace.s3.amazonaws.com/geek-blog/system-preferences-keyboard.png" alt="" /></p>
<p>3. View keyboard shortcuts window<br />
<img class="alignnone" src="https://mikegrace.s3.amazonaws.com/geek-blog/stystem-preferences-keyboard-shortcuts.png" alt="" /></p>
<p>4. Click plus button to add new shortcut<br />
<img class="alignnone" src="https://mikegrace.s3.amazonaws.com/geek-blog/add-new-keyboard-shortcut.png" alt="" /></p>
<p>5. Click add and celebrate!<br />
<a href="http://www.flickr.com/photos/dotbenjamin/2765083201/"><img class="alignnone" src="https://mikegrace.s3.amazonaws.com/geek-blog/party.jpg" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2010/11/creating-mac-keyboard-shortcuts/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Remove Non Printable Characters From String Using Ruby Regex</title>
		<link>http://geek.michaelgrace.org/2010/10/remove-non-printable-characters-from-string-using-ruby-regex/</link>
		<comments>http://geek.michaelgrace.org/2010/10/remove-non-printable-characters-from-string-using-ruby-regex/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 21:14:51 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Selenium]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1489</guid>
		<description><![CDATA[I Recently was working on building some Selenium tests and needed to compare a string after being saved to a database and returned to the user interface. Because of the interface plugin that does some syntax highlighting, the string was being displayed with some non printable characters. Because the non printable characters were not breaking [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignnone" style="width: 510px"><a href="http://www.flickr.com/photos/mwichary/3339740020/"><img src="https://mikegrace.s3.amazonaws.com/geek-blog/printer-chain.jpg" alt="non printable characters" width="500" height="333" /></a><p class="wp-caption-text">non printable characters</p></div>
<p>I Recently was working on building some Selenium tests and needed to compare a string after being saved to a database and returned to the user interface. Because of the interface plugin that does some syntax highlighting, the string was being displayed with some non printable characters. Because the non printable characters were not breaking the app, I decided that it would be OK for me to remove them to compare the strings in my selenium test.</p>
<p>To remove the non printable characters or only return the printable characters I used the following ruby:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">printableString = stringFromInterface.<span style="color:#9900CC;">scan</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">/</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#91;</span>:<span style="color:#CC0066; font-weight:bold;">print</span>:<span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">/</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">join</span></pre></div></div>

<p>There is a great list of other character classes that can be used in your regular expressions found at <a href="http://doc.infosnel.nl/ruby_regular_expressions.html">http://doc.infosnel.nl/ruby_regular_expressions.html</a></p>
<h2>Character classes</h2>
<table style="border-collapse: collapse;" border="0">
<thead>
<tr>
<td style="text-align: center; border-bottom-width: 2px; border-bottom-style: solid; border-bottom-color: #3366cc; padding-top: 2px; padding-right: 1em; padding-bottom: 2px; padding-left: 1em; vertical-align: bottom; font-weight: bold;">Class</td>
<td style="text-align: center; border-bottom-width: 2px; border-bottom-style: solid; border-bottom-color: #3366cc; padding-top: 2px; padding-right: 1em; padding-bottom: 2px; padding-left: 1em; vertical-align: bottom; font-weight: bold;">Switch</td>
<td style="text-align: center; border-bottom-width: 2px; border-bottom-style: solid; border-bottom-color: #3366cc; padding-top: 2px; padding-right: 1em; padding-bottom: 2px; padding-left: 1em; vertical-align: bottom; font-weight: bold;">Match description</td>
</tr>
</thead>
<tbody style="border-right-width: 1px; border-right-style: groove; border-right-color: silver; border-left-width: 1px; border-left-style: groove; border-left-color: silver;">
<tr>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>[0-9]</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>\d</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;">Decimal digit character</td>
</tr>
<tr>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>[^0-9]</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>\D</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;">Not a decimal digit character</td>
</tr>
<tr>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>[\s\t\r\n\f]</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>\s</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;">Whitespace character</td>
</tr>
<tr>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>[^\s\t\r\n\f]</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>\S</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;">Not a whitespace character</td>
</tr>
<tr>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>[A-Za-z0-9_]</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>\w</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;">Word character (alpha, numeric, and underscore)</td>
</tr>
<tr>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>[^A-Za-z0-9_]</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>\W</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;">Not a word character</td>
</tr>
<tr>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>[:alnum:]</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;">Alpha numeric (<tt>[A-Za-z0-9]</tt>)</td>
</tr>
<tr>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>[:alpha:]</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;">Uppercase and lowercase letters (<tt>[A-Za-z]</tt>)</td>
</tr>
<tr>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>[:blank:]</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;">Blank or tab character</td>
</tr>
<tr>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>[:space:]</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;">Whitespace characters</td>
</tr>
<tr>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>[:digit:]</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;">Decimal digit characters</td>
</tr>
<tr>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>[:lower:]</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;">Lowercase letters (<tt>[a-z]</tt>)</td>
</tr>
<tr>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>[:upper:]</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;">Uppercase characters</td>
</tr>
<tr>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>[:print:]</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;">Any printable character, including space</td>
</tr>
<tr>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>[:graph:]</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;">Printable characters excluding space</td>
</tr>
<tr>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>[:punct:]</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;">Punctuation characters: any printable character excluding aplhanumeric or space</td>
</tr>
<tr>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>[:cntrl]</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;">Chontrol characters (0&#215;00 to 0x1F and 0x7F)</td>
</tr>
<tr>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"><tt>[:xdigit:]</tt></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;"></td>
<td style="background-color: #ecf9e5; border-bottom-width: 1px; border-bottom-style: groove; border-bottom-color: black; padding: 5px;">Hexadecimal digits (<tt>[0-9a-fA-F]</tt>)</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2010/10/remove-non-printable-characters-from-string-using-ruby-regex/feed/</wfw:commentRss>
		<slash:comments>1</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>Placehold.it TextMate Snippet</title>
		<link>http://geek.michaelgrace.org/2010/08/placehold-it-textmate-snippet/</link>
		<comments>http://geek.michaelgrace.org/2010/08/placehold-it-textmate-snippet/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 16:32:11 +0000</pubDate>
		<dc:creator>MikeGrace</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[TextMate]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://geek.michaelgrace.org/?p=1439</guid>
		<description><![CDATA[After finding the sweet http://placehold.it/ web service, I knew I wanted to use it but wanted to be lazy. I created a TextMate snippet to make using placehold.it even easier. Now I just type &#8216;placehold&#8217;, press tab, and BAM! Download the placehold.it TextMate snippet Enjoy! Sweet scissor photo by transp]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignnone" style="width: 510px"><img title="Placehold.it - Quick and simple image placeholders" src="https://mikegrace.s3.amazonaws.com/geek-blog/scissors.jpg" alt="Placehold.it" width="500" height="373" /><p class="wp-caption-text">Placehold.it</p></div>
<p>After finding the sweet <a href="http://placehold.it/">http://placehold.it/</a> web service, I knew I wanted to use it but wanted to be lazy.</p>
<p>I created a TextMate snippet to make using placehold.it even easier.</p>
<p>Now I just type &#8216;placehold&#8217;, press tab, and BAM!</p>
<p><a href="https://mikegrace.s3.amazonaws.com/geek-blog/placehold_it.tmSnippet">Download the placehold.it TextMate snippet</a></p>
<p>Enjoy!</p>
<p><a href="http://www.flickr.com/photos/transp/2282008711/">Sweet scissor photo by transp</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geek.michaelgrace.org/2010/08/placehold-it-textmate-snippet/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

