<?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>UNEASYsilence &#187; Howto</title>
	<atom:link href="http://uneasysilence.com/archive/category/howto/feed/" rel="self" type="application/rss+xml" />
	<link>http://uneasysilence.com</link>
	<description></description>
	<lastBuildDate>Sun, 22 Nov 2009 01:52:30 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>javascript frameworks, oh how thee pain me.</title>
		<link>http://uneasysilence.com/archive/2008/09/13467/</link>
		<comments>http://uneasysilence.com/archive/2008/09/13467/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 03:40:03 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[Geeky]]></category>
		<category><![CDATA[Howto]]></category>
		<category><![CDATA[Random]]></category>
		<category><![CDATA[Stupid]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[hack]]></category>

		<guid isPermaLink="false">http://uneasysilence.com/?p=13467</guid>
		<description><![CDATA[<p>Web Developer?&#8230; writing and application?&#8230; want the front end to be badass?&#8230; welcome to the club.</p>
<p>I&#8217;ve been working with JavaScript for roughly 4 or 5 years at this point.  My first apps, if you can even call them that were randomized ads being server from an array on my buddies web site once his traffic picked up.  It was not only my first attempt at JS, but also one of the early programming lessons of my life.  With that said I&#8217;m old school, I can write an AJAX request by memory, I can tell you about the days of old using invisible iframes and having inter page communication between objects to do essentially what XMLHttpRequest does now (yes I know, using them is still a key to many apps).  With that said doing a good ole getElementById(&#8217;x') never phased me in the least.  The idea of building a DOM structure with document.createElement and document.appendChild&#8230; </p>
<blockquote><p>
<code><br />
var heart = document.createElement('heart');<br />
chest.appendChild(heart);<br />
</code>
</p></blockquote>
<p>With that said, I could continue down my route and stick to my ways, but a man that stands still in his knowledge is a man that gets left behind.  So I&#8217;ve started researching JS frameworks and the pros and cons of these now necessary evils/saints.</p>
<p>I personally fell for jQuery.  Clean syntax, ease of use, functionality&#8230; all of these things put it leaps and bounds ahead of it&#8217;s competitors in my book.  Looking over Prototype.js markup usually makes me walk away from the computer grumbling about a nose bleed and makes me smoke a cigarette.  With that said I&#8217;m not your typical JavaScript programmer from my experiences working with others in this field.  I feel that a good JS program much like any other should consist of &#8220;Objects&#8221; since the language is considered OOP, or atleast some what I tend to take advantage of that.  For more complex applications I&#8217;ll write a series of objects with self contained functionality to control multiple facets of an application.  An example of this would be a web based jabber client I wrote about a year ago.</p>
<p>The interface and most every functionality was controlled via a series of objects.  I&#8217;ll give a short example of what I mean.</p>
<blockquote><p>
<code><br />
function Chat()<br />
{<br />
    this.connected = this.establishConnection();<br />
    etc.<br />
}</p>
<p>Chat.prototype.handleMessage = function(ejabberdPacketObject)<br />
{<br />
    var chatInstance = this.activeChats[ejabberdPacketObject['username']];<br />
   if(!chatInstance)<br />
   {<br />
       this.activeChats[ejabberdPacketObject['username']] = new Conversation(ejabberdPacketObject);<br />
       etc.<br />
   }<br />
}</p>
<p>function Conversation(incomingConversation)<br />
{<br />
    this.username = incomingConversation['username'];<br />
    this.appendChatLog(incomingConversation['message']);<br />
}</p>
<p>Conversation.prototype.appendChatLog = function(msgText)<br />
{<br />
    msgText = this.username+" : "+msgText;<br />
    this.chatLog += msgText;<br />
    etc...<br />
}<br />
</code>
</p></blockquote>
<p>For all of the fans of Object Literal Notation, I know I&#8217;m a sinner, but I really do believe prototyping objects is the way to go because of readability and memory management.  I&#8217;ll make it up to you and write the next piece in OLN.</p>
<p>So long story short I&#8217;m working on a dynamic Pedigree builder, it&#8217;s rather simple really, it needs to build out the HTML DOM dynamically adding generations to a pedigree.  But I figured I would use jQuery to ease some of the extra markup overhead of appendChild and getElementById calls plus get all the fancy fancy shiny flashy effects as well.  I ran into an interesting issue that gave me a headache for a few hours so I wanted to present it to whoever may be running into the same issue and propose my fix.</p>
<p>See when I do development I like to store references to my DOM elements in Object properties to prevent looking over the DOM again plus it just makes it easier to grab DOM references in context.</p>
<blockquote><p><code><br />
this.myDiv = $('#gen1');<br />
this.addGenBtn = $('#gen1 input.add_generation');<br />
</code></p></blockquote>
<p>Using that with jQuery would fetch the input with a class name of &#8216;add_generation&#8217; inside of the DIV with the ID &#8216;gen1&#8242;.  Which is great, we get the correct element back and all the extra functionality supplied by jQuery including the &#8216;click()&#8217; functionality&#8230; I know I know I could use &#8216;onclick&#8217; but as my Grandpa says &#8220;If you&#8217;re gonna get wet, might as well go swimming&#8221;&#8230; basically what I&#8217;m saying here is if you&#8217;re using the framework, might as well implement it wherever you can. So now that we have the reference in place we can do stuff like this.</p>
<blockquote><p><code><br />
Pedigree.generations[5].myDiv.append('stuff');<br />
Pedigree.generations[5].addGenBtn;<br />
</code></p></blockquote>
<p>Another habit of mine is also passing the reference of the parent object to the DOM node itself for cross reference purposes.  This way the DOM node can &#8220;phone home&#8221; easily and react to user information and interaction accordingly.  Such as this.</p>
<blockquote><p><code><br />
this.addGenBtn.Parent = this;<br />
</code></p></blockquote>
<p>Now this may seem kind of clumsy but I&#8217;ll show you why I do it personally.</p>
<blockquote><p><code><br />
function Generation()<br />
{<br />
    this.myDiv = $('#gen1');<br />
    this.addGenBtn = $('#gen1 input.add_generation');<br />
    this.addGenBtn.Parent = this;<br />
    this.addGenBtn.click(this.addGeneration);<br />
}<br />
Generation.prototype = {<br />
    addGeneration:function()<br />
    {<br />
         this.Parent.myDiv.append(this.Parent.blankGenTemplate);<br />
    }<br />
};<br />
</code></p></blockquote>
<p>See now the functionality from an event also has a reference to it&#8217;s parent properties and methods.  This can be very very handy in the long run.  And this is where the problem set in.  When the &#8216;click&#8217; event handler fired, yes, it passed back the associated DOM element as expected.  Meaning if I placed a console.log() call and logged &#8216;this&#8217; to firebug I was seeing the DOM reference I expected.  However, any properties and methods I added to that DOM object were neutered.</p>
<blockquote><p><code><br />
...<br />
addGeneration:function()<br />
    {<br />
         console.log(this); // returned input DOM node...<br />
         console.log(this.Parent); // returned 'undefined'<br />
    }<br />
...<br />
</code></p></blockquote>
<p>Now me being an old school developer I&#8217;m used to saying &#8220;getElementById&#8221; and getting back exactly what I expected, any new methods or properties I add to that element will reside there until otherwise noted.  So this threw me for a loop, but a simple loop that I was looking at from the wrong angle.  See jQuery hands back an Object of it&#8217;s own when you &#8220;query&#8221; the DOM.  This is what leads to all the fancy added functionality, so although it appears you&#8217;re getting back just your DOM node with some extra methods slapped on the end you&#8217;re really receiving and jQuery object with your DOM reference tucked neatly inside.</p>
<p>Long story short should someone run into something along the lines of this and require a cigarette much as I did when there is a very simple, very quick, and very easy fix&#8230; I almost don&#8217;t feel like even publishing this article because I know some people are going to go &#8220;well no shit dumbass&#8221; but I feel like there might be someone out there that could use this information.  SO here it goes.</p>
<p>When you &#8220;query&#8221; the DOM as mentioned above it returns a custom jQuery object so appending methods/properties to that object does indeed append them, but it does so in the jQuery Object scope which could indeed be useful in some cases.  However when using the event controls such as &#8216;click()&#8217; the scope returns the event reporter.  This is why in the example above logging &#8216;this&#8217; outputs the input element, but it doesn&#8217;t see a .Parent reference.  It doesn&#8217;t see this reference because we technically never put it in place.  The trick to fixing this is damn simple though.  </p>
<p>See when a jQuery object is returned it&#8217;s much like a prototyped/extended array.  If you check the object out you&#8217;ll see it has a .length property and THIS is where it stores the raw DOM references.  So basically using it like an array is the trick.</p>
<blockquote><p><code><br />
this.addGenBtn = $('#gen1 input.add_generation');<br />
this.addGenBtn[0].Parent = this;<br />
this.addGenBtn.click(this.addGeneration);<br />
</code></p></blockquote>
<p>Now in that example we grabbed the first node of the array which is the raw DOM element to create our .Parent property.  Now we can use the idea&#8217;s stated above without skipping a beat.  Also note that if your &#8220;query&#8221; returns more than one item you can easily loop over the object just like an array and achieve the same idea like so.</p>
<blockquote><p><code>
<pre>
this.divControls = $('div.collapsible');
// loop over DOM elements and reference parent object
for(var a=0,z=this.divControls.length; a(lt*)z ; a++)
{
this.divControls[a].Parent = this;
}
this.divControls.click(this.handleCascade);
</pre>
<p></code></p></blockquote>
<p>*(lt) = word press won&#8217;t allow a less than because of template munge.. so yea, sorry.</p>
<p>So, with everything we&#8217;ve discussed here, I now give you an example (non functional) of the kind of functionality I was trying to achieve.</p>
<blockquote><p><code><br />
// pedigree class<br />
function Pedigree()<br />
{<br />
    this.init();<br />
}<br />
Pedigree.prototype = {<br />
	generations:[],<br />
	init:function()<br />
	{<br />
	// hook up DOM and such<br />
	}<br />
},</p>
<p>// generation class<br />
function Generation(parentGen)<br />
{<br />
    this.init(parentGen)<br />
}<br />
Generation.prototype = {<br />
    init:function(parentGen)<br />
    {<br />
	this.parentGen = parentGen;<br />
	this.masterPedigree = this.parentGen.masterPedigree;<br />
	this.generation = this.parentGen.generation+1;<br />
	this.buildDOM();<br />
	this.hookupDOM();<br />
    },<br />
    buildDOM:function()<br />
    {<br />
	// create interface, skipping these<br />
    },<br />
    hookupDOM()<br />
    {<br />
	var divName = '#gen'+this.parentGen.generation+'-'+this.generation;<br />
	this.myDiv = $(divName);<br />
	this.addBtn = $(divName+' input.add_generation');<br />
	this.addBtn[0].Parent = this;<br />
	this.addBtn.click(this.addGeneration);<br />
    },<br />
    addGeneration()<br />
    {<br />
	this.Parent.masterPedigree.push(new Generation(this.Parent));<br />
    }<br />
}<br />
</code></p></blockquote>
<p>Hope this helps anyone else that runs into scoping/object confusion using jQuery later on.  If anyone has any questions or comments I&#8217;d love to hear them.  To the JS dev. community&#8230; I know my ways might seem a bit unorthodox so I&#8217;m sure I&#8217;ll get nice and crucified.</p>
<p>If anyone is going to the Ajaxian conference in Boston next week (Sept. 29th &#8211; Oct. 1st) and would like to hang out and shoot the shit feel free to drop your email here and I&#8217;ll get in touch.</p>
<p>For those interested in learning more about jQuery <a href="http://jquery.com/">jQuery homepage</a>.</p>
<p>Once again, hope this helps, and sorry it&#8217;s so damn long ;)</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://uneasysilence.com/archive/2007/07/11458/" rel="bookmark">All Your Mac Are Belong to Us: How to Easily Reset an OSX Password</a></li><li><a href="http://uneasysilence.com/archive/2005/06/3445/" rel="bookmark">Beautiful client-side AJAX for Del.icio.us</a></li><li><a href="http://uneasysilence.com/archive/2007/02/9498/" rel="bookmark">Google is preparing a web based presentation service</a></li><li><a href="http://uneasysilence.com/archive/2005/12/4871/" rel="bookmark">Retrotastic: Run BASIC in your web browser!</a></li><li><a href="http://uneasysilence.com/archive/2009/04/13977/" rel="bookmark">Accidental Coupon Code Cost 11,000 Pizzas</a></li></ul></div><div style="display:block"><small><em><a href="http://uneasysilence.com/archive/2008/09/13467/#comments">Leave A Comment</a></em></small></div>]]></description>
			<content:encoded><![CDATA[<p>Web Developer?&#8230; writing and application?&#8230; want the front end to be badass?&#8230; welcome to the club.</p>
<p>I&#8217;ve been working with JavaScript for roughly 4 or 5 years at this point.  My first apps, if you can even call them that were randomized ads being server from an array on my buddies web site once his traffic picked up.  It was not only my first attempt at JS, but also one of the early programming lessons of my life.  With that said I&#8217;m old school, I can write an AJAX request by memory, I can tell you about the days of old using invisible iframes and having inter page communication between objects to do essentially what XMLHttpRequest does now (yes I know, using them is still a key to many apps).  With that said doing a good ole getElementById(&#8217;x') never phased me in the least.  The idea of building a DOM structure with document.createElement and document.appendChild&#8230; </p>
<blockquote><p>
<code><br />
var heart = document.createElement('heart');<br />
chest.appendChild(heart);<br />
</code>
</p></blockquote>
<p>With that said, I could continue down my route and stick to my ways, but a man that stands still in his knowledge is a man that gets left behind.  So I&#8217;ve started researching JS frameworks and the pros and cons of these now necessary evils/saints.</p>
<p>I personally fell for jQuery.  Clean syntax, ease of use, functionality&#8230; all of these things put it leaps and bounds ahead of it&#8217;s competitors in my book.  Looking over Prototype.js markup usually makes me walk away from the computer grumbling about a nose bleed and makes me smoke a cigarette.  With that said I&#8217;m not your typical JavaScript programmer from my experiences working with others in this field.  I feel that a good JS program much like any other should consist of &#8220;Objects&#8221; since the language is considered OOP, or atleast some what I tend to take advantage of that.  For more complex applications I&#8217;ll write a series of objects with self contained functionality to control multiple facets of an application.  An example of this would be a web based jabber client I wrote about a year ago.</p>
<p>The interface and most every functionality was controlled via a series of objects.  I&#8217;ll give a short example of what I mean.</p>
<blockquote><p>
<code><br />
function Chat()<br />
{<br />
    this.connected = this.establishConnection();<br />
    etc.<br />
}</p>
<p>Chat.prototype.handleMessage = function(ejabberdPacketObject)<br />
{<br />
    var chatInstance = this.activeChats[ejabberdPacketObject['username']];<br />
   if(!chatInstance)<br />
   {<br />
       this.activeChats[ejabberdPacketObject['username']] = new Conversation(ejabberdPacketObject);<br />
       etc.<br />
   }<br />
}</p>
<p>function Conversation(incomingConversation)<br />
{<br />
    this.username = incomingConversation['username'];<br />
    this.appendChatLog(incomingConversation['message']);<br />
}</p>
<p>Conversation.prototype.appendChatLog = function(msgText)<br />
{<br />
    msgText = this.username+" : "+msgText;<br />
    this.chatLog += msgText;<br />
    etc...<br />
}<br />
</code>
</p></blockquote>
<p>For all of the fans of Object Literal Notation, I know I&#8217;m a sinner, but I really do believe prototyping objects is the way to go because of readability and memory management.  I&#8217;ll make it up to you and write the next piece in OLN.</p>
<p>So long story short I&#8217;m working on a dynamic Pedigree builder, it&#8217;s rather simple really, it needs to build out the HTML DOM dynamically adding generations to a pedigree.  But I figured I would use jQuery to ease some of the extra markup overhead of appendChild and getElementById calls plus get all the fancy fancy shiny flashy effects as well.  I ran into an interesting issue that gave me a headache for a few hours so I wanted to present it to whoever may be running into the same issue and propose my fix.</p>
<p>See when I do development I like to store references to my DOM elements in Object properties to prevent looking over the DOM again plus it just makes it easier to grab DOM references in context.</p>
<blockquote><p><code><br />
this.myDiv = $('#gen1');<br />
this.addGenBtn = $('#gen1 input.add_generation');<br />
</code></p></blockquote>
<p>Using that with jQuery would fetch the input with a class name of &#8216;add_generation&#8217; inside of the DIV with the ID &#8216;gen1&#8242;.  Which is great, we get the correct element back and all the extra functionality supplied by jQuery including the &#8216;click()&#8217; functionality&#8230; I know I know I could use &#8216;onclick&#8217; but as my Grandpa says &#8220;If you&#8217;re gonna get wet, might as well go swimming&#8221;&#8230; basically what I&#8217;m saying here is if you&#8217;re using the framework, might as well implement it wherever you can. So now that we have the reference in place we can do stuff like this.</p>
<blockquote><p><code><br />
Pedigree.generations[5].myDiv.append('stuff');<br />
Pedigree.generations[5].addGenBtn;<br />
</code></p></blockquote>
<p>Another habit of mine is also passing the reference of the parent object to the DOM node itself for cross reference purposes.  This way the DOM node can &#8220;phone home&#8221; easily and react to user information and interaction accordingly.  Such as this.</p>
<blockquote><p><code><br />
this.addGenBtn.Parent = this;<br />
</code></p></blockquote>
<p>Now this may seem kind of clumsy but I&#8217;ll show you why I do it personally.</p>
<blockquote><p><code><br />
function Generation()<br />
{<br />
    this.myDiv = $('#gen1');<br />
    this.addGenBtn = $('#gen1 input.add_generation');<br />
    this.addGenBtn.Parent = this;<br />
    this.addGenBtn.click(this.addGeneration);<br />
}<br />
Generation.prototype = {<br />
    addGeneration:function()<br />
    {<br />
         this.Parent.myDiv.append(this.Parent.blankGenTemplate);<br />
    }<br />
};<br />
</code></p></blockquote>
<p>See now the functionality from an event also has a reference to it&#8217;s parent properties and methods.  This can be very very handy in the long run.  And this is where the problem set in.  When the &#8216;click&#8217; event handler fired, yes, it passed back the associated DOM element as expected.  Meaning if I placed a console.log() call and logged &#8216;this&#8217; to firebug I was seeing the DOM reference I expected.  However, any properties and methods I added to that DOM object were neutered.</p>
<blockquote><p><code><br />
...<br />
addGeneration:function()<br />
    {<br />
         console.log(this); // returned input DOM node...<br />
         console.log(this.Parent); // returned 'undefined'<br />
    }<br />
...<br />
</code></p></blockquote>
<p>Now me being an old school developer I&#8217;m used to saying &#8220;getElementById&#8221; and getting back exactly what I expected, any new methods or properties I add to that element will reside there until otherwise noted.  So this threw me for a loop, but a simple loop that I was looking at from the wrong angle.  See jQuery hands back an Object of it&#8217;s own when you &#8220;query&#8221; the DOM.  This is what leads to all the fancy added functionality, so although it appears you&#8217;re getting back just your DOM node with some extra methods slapped on the end you&#8217;re really receiving and jQuery object with your DOM reference tucked neatly inside.</p>
<p>Long story short should someone run into something along the lines of this and require a cigarette much as I did when there is a very simple, very quick, and very easy fix&#8230; I almost don&#8217;t feel like even publishing this article because I know some people are going to go &#8220;well no shit dumbass&#8221; but I feel like there might be someone out there that could use this information.  SO here it goes.</p>
<p>When you &#8220;query&#8221; the DOM as mentioned above it returns a custom jQuery object so appending methods/properties to that object does indeed append them, but it does so in the jQuery Object scope which could indeed be useful in some cases.  However when using the event controls such as &#8216;click()&#8217; the scope returns the event reporter.  This is why in the example above logging &#8216;this&#8217; outputs the input element, but it doesn&#8217;t see a .Parent reference.  It doesn&#8217;t see this reference because we technically never put it in place.  The trick to fixing this is damn simple though.  </p>
<p>See when a jQuery object is returned it&#8217;s much like a prototyped/extended array.  If you check the object out you&#8217;ll see it has a .length property and THIS is where it stores the raw DOM references.  So basically using it like an array is the trick.</p>
<blockquote><p><code><br />
this.addGenBtn = $('#gen1 input.add_generation');<br />
this.addGenBtn[0].Parent = this;<br />
this.addGenBtn.click(this.addGeneration);<br />
</code></p></blockquote>
<p>Now in that example we grabbed the first node of the array which is the raw DOM element to create our .Parent property.  Now we can use the idea&#8217;s stated above without skipping a beat.  Also note that if your &#8220;query&#8221; returns more than one item you can easily loop over the object just like an array and achieve the same idea like so.</p>
<blockquote><p><code>
<pre>
this.divControls = $('div.collapsible');
// loop over DOM elements and reference parent object
for(var a=0,z=this.divControls.length; a(lt*)z ; a++)
{
this.divControls[a].Parent = this;
}
this.divControls.click(this.handleCascade);
</pre>
<p></code></p></blockquote>
<p>*(lt) = word press won&#8217;t allow a less than because of template munge.. so yea, sorry.</p>
<p>So, with everything we&#8217;ve discussed here, I now give you an example (non functional) of the kind of functionality I was trying to achieve.</p>
<blockquote><p><code><br />
// pedigree class<br />
function Pedigree()<br />
{<br />
    this.init();<br />
}<br />
Pedigree.prototype = {<br />
	generations:[],<br />
	init:function()<br />
	{<br />
	// hook up DOM and such<br />
	}<br />
},</p>
<p>// generation class<br />
function Generation(parentGen)<br />
{<br />
    this.init(parentGen)<br />
}<br />
Generation.prototype = {<br />
    init:function(parentGen)<br />
    {<br />
	this.parentGen = parentGen;<br />
	this.masterPedigree = this.parentGen.masterPedigree;<br />
	this.generation = this.parentGen.generation+1;<br />
	this.buildDOM();<br />
	this.hookupDOM();<br />
    },<br />
    buildDOM:function()<br />
    {<br />
	// create interface, skipping these<br />
    },<br />
    hookupDOM()<br />
    {<br />
	var divName = '#gen'+this.parentGen.generation+'-'+this.generation;<br />
	this.myDiv = $(divName);<br />
	this.addBtn = $(divName+' input.add_generation');<br />
	this.addBtn[0].Parent = this;<br />
	this.addBtn.click(this.addGeneration);<br />
    },<br />
    addGeneration()<br />
    {<br />
	this.Parent.masterPedigree.push(new Generation(this.Parent));<br />
    }<br />
}<br />
</code></p></blockquote>
<p>Hope this helps anyone else that runs into scoping/object confusion using jQuery later on.  If anyone has any questions or comments I&#8217;d love to hear them.  To the JS dev. community&#8230; I know my ways might seem a bit unorthodox so I&#8217;m sure I&#8217;ll get nice and crucified.</p>
<p>If anyone is going to the Ajaxian conference in Boston next week (Sept. 29th &#8211; Oct. 1st) and would like to hang out and shoot the shit feel free to drop your email here and I&#8217;ll get in touch.</p>
<p>For those interested in learning more about jQuery <a href="http://jquery.com/">jQuery homepage</a>.</p>
<p>Once again, hope this helps, and sorry it&#8217;s so damn long ;)</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://uneasysilence.com/archive/2007/07/11458/" rel="bookmark">All Your Mac Are Belong to Us: How to Easily Reset an OSX Password</a></li><li><a href="http://uneasysilence.com/archive/2005/06/3445/" rel="bookmark">Beautiful client-side AJAX for Del.icio.us</a></li><li><a href="http://uneasysilence.com/archive/2007/02/9498/" rel="bookmark">Google is preparing a web based presentation service</a></li><li><a href="http://uneasysilence.com/archive/2005/12/4871/" rel="bookmark">Retrotastic: Run BASIC in your web browser!</a></li><li><a href="http://uneasysilence.com/archive/2009/04/13977/" rel="bookmark">Accidental Coupon Code Cost 11,000 Pizzas</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://uneasysilence.com/archive/2008/09/13467/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Truck Spills</title>
		<link>http://uneasysilence.com/archive/2008/03/13041/</link>
		<comments>http://uneasysilence.com/archive/2008/03/13041/#comments</comments>
		<pubDate>Sat, 08 Mar 2008 21:33:34 +0000</pubDate>
		<dc:creator>Evan</dc:creator>
				<category><![CDATA[Cool]]></category>
		<category><![CDATA[Howto]]></category>
		<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://uneasysilence.com/archive/2008/03/13041/</guid>
		<description><![CDATA[<p><a href='http://uneasysilence.com/media/2008/03/goats.jpg' title='goats.jpg'><img src='http://uneasysilence.com/media/2008/03/goats.jpg' alt='goats.jpg' /></a></p>
<p>I sometimes come across sites that are just way too weird to write about on this site, while others such as this have me scratching my head when I think about what the title should be. So, truck spills is, well:</p>
<blockquote><p>The website of odd, strange, interesting, and unbelievable things spilled on the road by trucks.</p></blockquote>
<p>I was going to pick one of the random spills to talk about, such as the <a href="http://www.truckspills.com/whale_spill.html">exploding whale</a>, <a href="http://www.truckspills.com/goat_spill.html">the goats</a> or even <a href="http://www.truckspills.com/chicken_parts_spill.html">the chicken parts spill</a>. But I couldn&#8217;t do it, I couldn&#8217;t pick just one. But man, it is mind boggling the sorts of things there are sites for.</p>
<p><a href="http://www.truckspills.com/">Read More</a></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://uneasysilence.com/archive/2005/07/3802/" rel="bookmark">Goats & Cows for Chelsea.. What a deal!!</a></li><li><a href="http://uneasysilence.com/archive/2005/06/3458/" rel="bookmark">Move over Smokey the Bear</a></li><li><a href="http://uneasysilence.com/archive/2008/02/12948/" rel="bookmark">Write Something</a></li><li><a href="http://uneasysilence.com/archive/2008/03/13111/" rel="bookmark">Find Anagrams In Stuff</a></li><li><a href="http://uneasysilence.com/archive/2008/02/12959/" rel="bookmark">Avoider = Way Too Hard</a></li></ul></div><div style="display:block"><small><em><a href="http://uneasysilence.com/archive/2008/03/13041/#comments">Leave A Comment</a></em></small></div>]]></description>
			<content:encoded><![CDATA[<p><a href='http://uneasysilence.com/media/2008/03/goats.jpg' title='goats.jpg'><img src='http://uneasysilence.com/media/2008/03/goats.jpg' alt='goats.jpg' /></a></p>
<p>I sometimes come across sites that are just way too weird to write about on this site, while others such as this have me scratching my head when I think about what the title should be. So, truck spills is, well:</p>
<blockquote><p>The website of odd, strange, interesting, and unbelievable things spilled on the road by trucks.</p></blockquote>
<p>I was going to pick one of the random spills to talk about, such as the <a href="http://www.truckspills.com/whale_spill.html">exploding whale</a>, <a href="http://www.truckspills.com/goat_spill.html">the goats</a> or even <a href="http://www.truckspills.com/chicken_parts_spill.html">the chicken parts spill</a>. But I couldn&#8217;t do it, I couldn&#8217;t pick just one. But man, it is mind boggling the sorts of things there are sites for.</p>
<p><a href="http://www.truckspills.com/">Read More</a></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://uneasysilence.com/archive/2005/07/3802/" rel="bookmark">Goats & Cows for Chelsea.. What a deal!!</a></li><li><a href="http://uneasysilence.com/archive/2005/06/3458/" rel="bookmark">Move over Smokey the Bear</a></li><li><a href="http://uneasysilence.com/archive/2008/02/12948/" rel="bookmark">Write Something</a></li><li><a href="http://uneasysilence.com/archive/2008/03/13111/" rel="bookmark">Find Anagrams In Stuff</a></li><li><a href="http://uneasysilence.com/archive/2008/02/12959/" rel="bookmark">Avoider = Way Too Hard</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://uneasysilence.com/archive/2008/03/13041/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Hone Your Cubeecraft</title>
		<link>http://uneasysilence.com/archive/2008/03/13036/</link>
		<comments>http://uneasysilence.com/archive/2008/03/13036/#comments</comments>
		<pubDate>Thu, 06 Mar 2008 16:18:12 +0000</pubDate>
		<dc:creator>Evan</dc:creator>
				<category><![CDATA[Cool]]></category>
		<category><![CDATA[Geeky]]></category>
		<category><![CDATA[Howto]]></category>
		<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://uneasysilence.com/archive/2008/03/13036/</guid>
		<description><![CDATA[<p><a href="http://uneasysilence.com/media/2008/03/cube.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="138" alt="cube" src="http://uneasysilence.com/media/2008/03/cube-thumb.jpg" width="464" border="0" /></a> </p>
<p>Are you a fan of Origami but can&#8217;t for the life of you figure out how they do it? Why not start small, with Cubeecraft? The site is as straightforward as it gets: click on a character on the page which links to the printable template image, then cut and assemble. There&#8217;s no need for any sort of adhesive which is encouraging. New characters will be added each week. If anyone is trying this out, let us know what how it came out! (Pics or it never happened.)</p>
<p><a href="http://www.cubeecraft.com/">Read More</a></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://uneasysilence.com/archive/2008/03/13056/" rel="bookmark">hulu goes public</a></li><li><a href="http://uneasysilence.com/archive/2008/03/13085/" rel="bookmark">These Mechs Are Ready</a></li><li><a href="http://uneasysilence.com/archive/2007/02/9628/" rel="bookmark">A Rubik's Cube for Those Who Couldn't Care Less</a></li><li><a href="http://uneasysilence.com/archive/2005/12/4724/" rel="bookmark">Solving the Rubik's Cube</a></li><li><a href="http://uneasysilence.com/archive/2005/10/4477/" rel="bookmark">What's your page worth?</a></li></ul></div><div style="display:block"><small><em><a href="http://uneasysilence.com/archive/2008/03/13036/#comments">Leave A Comment</a></em></small></div>]]></description>
			<content:encoded><![CDATA[<p><a href="http://uneasysilence.com/media/2008/03/cube.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="138" alt="cube" src="http://uneasysilence.com/media/2008/03/cube-thumb.jpg" width="464" border="0" /></a> </p>
<p>Are you a fan of Origami but can&#8217;t for the life of you figure out how they do it? Why not start small, with Cubeecraft? The site is as straightforward as it gets: click on a character on the page which links to the printable template image, then cut and assemble. There&#8217;s no need for any sort of adhesive which is encouraging. New characters will be added each week. If anyone is trying this out, let us know what how it came out! (Pics or it never happened.)</p>
<p><a href="http://www.cubeecraft.com/">Read More</a></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://uneasysilence.com/archive/2008/03/13056/" rel="bookmark">hulu goes public</a></li><li><a href="http://uneasysilence.com/archive/2008/03/13085/" rel="bookmark">These Mechs Are Ready</a></li><li><a href="http://uneasysilence.com/archive/2007/02/9628/" rel="bookmark">A Rubik's Cube for Those Who Couldn't Care Less</a></li><li><a href="http://uneasysilence.com/archive/2005/12/4724/" rel="bookmark">Solving the Rubik's Cube</a></li><li><a href="http://uneasysilence.com/archive/2005/10/4477/" rel="bookmark">What's your page worth?</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://uneasysilence.com/archive/2008/03/13036/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Sync Google and Outlook With Google Calendar Sync</title>
		<link>http://uneasysilence.com/archive/2008/03/13033/</link>
		<comments>http://uneasysilence.com/archive/2008/03/13033/#comments</comments>
		<pubDate>Thu, 06 Mar 2008 01:40:56 +0000</pubDate>
		<dc:creator>Evan</dc:creator>
				<category><![CDATA[Geeky]]></category>
		<category><![CDATA[Howto]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://uneasysilence.com/archive/2008/03/13033/</guid>
		<description><![CDATA[<p><a href='http://uneasysilence.com/media/2008/03/calsync.jpg' title='calsync.jpg'><img src='http://uneasysilence.com/media/2008/03/calsync.jpg' alt='calsync.jpg' /></a></p>
<p>Want to use a web-based calendar but can&#8217;t because of syncing, or lack thereof? Google Calendar Sync was <a href="http://googleblog.blogspot.com/2008/03/google-calendar-sync.html">unveiled tonight</a> allows you to sync your Google Calendar with your Outlook Calendar. The program works both ways and should prove useful for anyone who fancies having their Calendar data available wherever they are.</p>
<p><a href="http://googleblog.blogspot.com/2008/03/google-calendar-sync.html">Read More</a></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://uneasysilence.com/archive/2007/05/10835/" rel="bookmark">Google Announces WAP Ready Calendar</a></li><li><a href="http://uneasysilence.com/archive/2006/11/8139/" rel="bookmark">Spanning Sync - Sync Google Calendars and iCal</a></li><li><a href="http://uneasysilence.com/archive/2006/10/7872/" rel="bookmark">Want Google Calendar syncing with your cellphone?</a></li><li><a href="http://uneasysilence.com/archive/2007/03/9998/" rel="bookmark">Spanning Sync officially released, users cry foul at pricing</a></li><li><a href="http://uneasysilence.com/archive/2006/04/6001/" rel="bookmark">Google Calendars is now LIVE!</a></li></ul></div><div style="display:block"><small><em><a href="http://uneasysilence.com/archive/2008/03/13033/#comments">Leave A Comment</a></em></small></div>]]></description>
			<content:encoded><![CDATA[<p><a href='http://uneasysilence.com/media/2008/03/calsync.jpg' title='calsync.jpg'><img src='http://uneasysilence.com/media/2008/03/calsync.jpg' alt='calsync.jpg' /></a></p>
<p>Want to use a web-based calendar but can&#8217;t because of syncing, or lack thereof? Google Calendar Sync was <a href="http://googleblog.blogspot.com/2008/03/google-calendar-sync.html">unveiled tonight</a> allows you to sync your Google Calendar with your Outlook Calendar. The program works both ways and should prove useful for anyone who fancies having their Calendar data available wherever they are.</p>
<p><a href="http://googleblog.blogspot.com/2008/03/google-calendar-sync.html">Read More</a></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://uneasysilence.com/archive/2007/05/10835/" rel="bookmark">Google Announces WAP Ready Calendar</a></li><li><a href="http://uneasysilence.com/archive/2006/11/8139/" rel="bookmark">Spanning Sync - Sync Google Calendars and iCal</a></li><li><a href="http://uneasysilence.com/archive/2006/10/7872/" rel="bookmark">Want Google Calendar syncing with your cellphone?</a></li><li><a href="http://uneasysilence.com/archive/2007/03/9998/" rel="bookmark">Spanning Sync officially released, users cry foul at pricing</a></li><li><a href="http://uneasysilence.com/archive/2006/04/6001/" rel="bookmark">Google Calendars is now LIVE!</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://uneasysilence.com/archive/2008/03/13033/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Make Custom Search Shortcuts</title>
		<link>http://uneasysilence.com/archive/2008/02/13015/</link>
		<comments>http://uneasysilence.com/archive/2008/02/13015/#comments</comments>
		<pubDate>Wed, 27 Feb 2008 17:55:59 +0000</pubDate>
		<dc:creator>Evan</dc:creator>
				<category><![CDATA[Cool]]></category>
		<category><![CDATA[Geeky]]></category>
		<category><![CDATA[Howto]]></category>
		<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://uneasysilence.com/archive/2008/02/13015/</guid>
		<description><![CDATA[<p><object width="460" height="279" ><param name="movie" value="http://bitcast-a.bitgravity.com/revision3/swf/rev3_player.swf?AutoPlay=off&#038;Buffer=120&#038;File=http://www.podtrac.com/pts/redirect.flv/bitcast-a.bitgravity.com/revision3/flv/tekzilla/tzdaily/0047/tekzilla--tzdaily--0047--2008-02-25search--800kbps.flv&#038;ScrubMode=advanced&#038;Thumb=http://bitcast-a.bitgravity.com/revision3/thumbs/tekzilla--0047--2008-02-25search--thumb.jpg&#038;DefaultRatio=0.56&#038;AutoSize=off" /><param name="base" value="http://bitcast-a.bitgravity.com/revision3/swf/" /><param name="loop" value="false" /><param name="quality" value="high" /><param name="bgcolor" value="#171717" /><param name="allowScriptAccess" value="sameDomain" /><param name="allowFullScreen" value="true" /><embed loop="false" quality="high" bgcolor="#171717" width="460" height="279" name="rev3player_v2" align="middle" allowScriptAccess="sameDomain" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://bitcast-a.bitgravity.com/revision3/swf/rev3_player.swf?AutoPlay=off&#038;Buffer=120&#038;File=http://www.podtrac.com/pts/redirect.flv/bitcast-a.bitgravity.com/revision3/flv/tekzilla/tzdaily/0047/tekzilla--tzdaily--0047--2008-02-25search--800kbps.flv&#038;ScrubMode=advanced&#038;Thumb=http://bitcast-a.bitgravity.com/revision3/thumbs/tekzilla--0047--2008-02-25search--thumb.jpg&#038;DefaultRatio=0.56&#038;AutoSize=off&#038;allowFullScreen=true" base="http://bitcast-a.bitgravity.com/revision3/swf/" /> </object></p>
<p>Tekzilla daily gives us this useful tip for searching any sites that you go to frequently. Make sure to set up keyword for UNEASYsilence!</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://uneasysilence.com/archive/2007/09/12181/" rel="bookmark">Revision3 Adds Embedding</a></li><li><a href="http://uneasysilence.com/archive/2007/08/12001/" rel="bookmark">Kane & Lynch: Dead Men Gameplay</a></li><li><a href="http://uneasysilence.com/archive/2007/07/11554/" rel="bookmark">Metal Gear Solid 4 Gameplay Impresses</a></li><li><a href="http://uneasysilence.com/archive/2008/06/13213/" rel="bookmark">'Why we know less than ever about the world'</a></li><li><a href="http://uneasysilence.com/archive/2008/03/13068/" rel="bookmark">Jill Bolte Taylor: My stroke of insight</a></li></ul></div><div style="display:block"><small><em><a href="http://uneasysilence.com/archive/2008/02/13015/#comments">Leave A Comment</a></em></small></div>]]></description>
			<content:encoded><![CDATA[<p><object width="460" height="279" ><param name="movie" value="http://bitcast-a.bitgravity.com/revision3/swf/rev3_player.swf?AutoPlay=off&#038;Buffer=120&#038;File=http://www.podtrac.com/pts/redirect.flv/bitcast-a.bitgravity.com/revision3/flv/tekzilla/tzdaily/0047/tekzilla--tzdaily--0047--2008-02-25search--800kbps.flv&#038;ScrubMode=advanced&#038;Thumb=http://bitcast-a.bitgravity.com/revision3/thumbs/tekzilla--0047--2008-02-25search--thumb.jpg&#038;DefaultRatio=0.56&#038;AutoSize=off" /><param name="base" value="http://bitcast-a.bitgravity.com/revision3/swf/" /><param name="loop" value="false" /><param name="quality" value="high" /><param name="bgcolor" value="#171717" /><param name="allowScriptAccess" value="sameDomain" /><param name="allowFullScreen" value="true" /><embed loop="false" quality="high" bgcolor="#171717" width="460" height="279" name="rev3player_v2" align="middle" allowScriptAccess="sameDomain" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://bitcast-a.bitgravity.com/revision3/swf/rev3_player.swf?AutoPlay=off&#038;Buffer=120&#038;File=http://www.podtrac.com/pts/redirect.flv/bitcast-a.bitgravity.com/revision3/flv/tekzilla/tzdaily/0047/tekzilla--tzdaily--0047--2008-02-25search--800kbps.flv&#038;ScrubMode=advanced&#038;Thumb=http://bitcast-a.bitgravity.com/revision3/thumbs/tekzilla--0047--2008-02-25search--thumb.jpg&#038;DefaultRatio=0.56&#038;AutoSize=off&#038;allowFullScreen=true" base="http://bitcast-a.bitgravity.com/revision3/swf/" /> </object></p>
<p>Tekzilla daily gives us this useful tip for searching any sites that you go to frequently. Make sure to set up keyword for UNEASYsilence!</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://uneasysilence.com/archive/2007/09/12181/" rel="bookmark">Revision3 Adds Embedding</a></li><li><a href="http://uneasysilence.com/archive/2007/08/12001/" rel="bookmark">Kane & Lynch: Dead Men Gameplay</a></li><li><a href="http://uneasysilence.com/archive/2007/07/11554/" rel="bookmark">Metal Gear Solid 4 Gameplay Impresses</a></li><li><a href="http://uneasysilence.com/archive/2008/06/13213/" rel="bookmark">'Why we know less than ever about the world'</a></li><li><a href="http://uneasysilence.com/archive/2008/03/13068/" rel="bookmark">Jill Bolte Taylor: My stroke of insight</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://uneasysilence.com/archive/2008/02/13015/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Skip Forced Facebook Application Invites</title>
		<link>http://uneasysilence.com/archive/2008/02/13008/</link>
		<comments>http://uneasysilence.com/archive/2008/02/13008/#comments</comments>
		<pubDate>Wed, 27 Feb 2008 12:58:39 +0000</pubDate>
		<dc:creator>Evan</dc:creator>
				<category><![CDATA[Cool]]></category>
		<category><![CDATA[Geeky]]></category>
		<category><![CDATA[Howto]]></category>

		<guid isPermaLink="false">http://uneasysilence.com/archive/2008/02/13008/</guid>
		<description><![CDATA[<p><a href='http://uneasysilence.com/media/2008/02/jetman1.jpg' title='jetman1.jpg'><img src='http://uneasysilence.com/media/2008/02/jetman1.jpg' alt='jetman1.jpg' /></a></p>
<p>I&#8217;m an avid Facebook user and I try to keep my Application use at a minimum. One major annoyance is the applications that require you to invite friends before you can do anything. Applications like <a href="http://apps.facebook.com/playjetman/index.php">Jetman</a> do it in a less annoying way &#8211; you invite friends to get points to unlock new characters. But what if you <em>don&#8217;t</em> have the 20 friends required to be invited to use the application? Or what if you just want to cheat the system? Drag the &#8220;skip forced invites&#8221; bookmarklet to your Bookmarks toolbar and click on it when you&#8217;re on a page in Facebook for an application requiring you to invite friends. Now choose how many invites you want it to spoof the application into thinking you sent and you will be the envy of all your friends having unlocked the mermaid, Kirby and Magic Schoolbus on the same day in Jetman. Giggity, giggity.<br />
<a href="http://facebook.gaiatools.com/skipinvite/"><br />
Try It</a></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://uneasysilence.com/archive/2008/04/13157/" rel="bookmark">Experiencng Facebook Spam?</a></li><li><a href="http://uneasysilence.com/archive/2008/06/13234/" rel="bookmark">Big Day for Palm: Centro Now On Verizon and New Native Facebook Application</a></li><li><a href="http://uneasysilence.com/archive/2007/10/12519/" rel="bookmark">Reasons You Might Have Your Facebook Account Disabled</a></li><li><a href="http://uneasysilence.com/archive/2008/04/13171/" rel="bookmark">Facebook Chat Launches Everywhere</a></li><li><a href="http://uneasysilence.com/archive/2008/02/12991/" rel="bookmark">Still Need Aviary Invites?</a></li></ul></div><div style="display:block"><small><em><a href="http://uneasysilence.com/archive/2008/02/13008/#comments">Leave A Comment</a></em></small></div>]]></description>
			<content:encoded><![CDATA[<p><a href='http://uneasysilence.com/media/2008/02/jetman1.jpg' title='jetman1.jpg'><img src='http://uneasysilence.com/media/2008/02/jetman1.jpg' alt='jetman1.jpg' /></a></p>
<p>I&#8217;m an avid Facebook user and I try to keep my Application use at a minimum. One major annoyance is the applications that require you to invite friends before you can do anything. Applications like <a href="http://apps.facebook.com/playjetman/index.php">Jetman</a> do it in a less annoying way &#8211; you invite friends to get points to unlock new characters. But what if you <em>don&#8217;t</em> have the 20 friends required to be invited to use the application? Or what if you just want to cheat the system? Drag the &#8220;skip forced invites&#8221; bookmarklet to your Bookmarks toolbar and click on it when you&#8217;re on a page in Facebook for an application requiring you to invite friends. Now choose how many invites you want it to spoof the application into thinking you sent and you will be the envy of all your friends having unlocked the mermaid, Kirby and Magic Schoolbus on the same day in Jetman. Giggity, giggity.<br />
<a href="http://facebook.gaiatools.com/skipinvite/"><br />
Try It</a></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://uneasysilence.com/archive/2008/04/13157/" rel="bookmark">Experiencng Facebook Spam?</a></li><li><a href="http://uneasysilence.com/archive/2008/06/13234/" rel="bookmark">Big Day for Palm: Centro Now On Verizon and New Native Facebook Application</a></li><li><a href="http://uneasysilence.com/archive/2007/10/12519/" rel="bookmark">Reasons You Might Have Your Facebook Account Disabled</a></li><li><a href="http://uneasysilence.com/archive/2008/04/13171/" rel="bookmark">Facebook Chat Launches Everywhere</a></li><li><a href="http://uneasysilence.com/archive/2008/02/12991/" rel="bookmark">Still Need Aviary Invites?</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://uneasysilence.com/archive/2008/02/13008/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Kill. Dead. Pixel.</title>
		<link>http://uneasysilence.com/archive/2008/02/12958/</link>
		<comments>http://uneasysilence.com/archive/2008/02/12958/#comments</comments>
		<pubDate>Thu, 14 Feb 2008 07:27:17 +0000</pubDate>
		<dc:creator>Evan</dc:creator>
				<category><![CDATA[Cool]]></category>
		<category><![CDATA[Geeky]]></category>
		<category><![CDATA[Howto]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://uneasysilence.com/archive/2008/02/12958/</guid>
		<description><![CDATA[<p><a href='http://uneasysilence.com/media/2008/02/kdp.jpg' title='kdp.jpg'><img src='http://uneasysilence.com/media/2008/02/kdp.jpg' alt='kdp.jpg' /></a></p>
<p>Kill Dead Pixel is a new game where you play a lowly computer user who found a dead pixel on his LCD monitor and wants to try fixing it. Actually, sorry, it&#8217;s not a game, but pretty much just reality. So if you&#8217;re in the position above and want to try fixing a dead pixel, give this site a try. Simply drag the graphic to the dead pixel and leave it for an hour. If it doesn&#8217;t work, go in full screen mode and try it out for 12 hours. I sadly have no dead pixels to tell you if this works or not, but if any of you have use for this and try it out, let us know how it goes. Now I just need to figure out if killing a dead pixel means it&#8217;s now a brain-eating undead zombie pixel.</p>
<p><a href="http://killdeadpixel.com">Try It.</a></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://uneasysilence.com/archive/2007/04/10188/" rel="bookmark">Create Your Own Pixel Animations</a></li><li><a href="http://uneasysilence.com/archive/2006/08/7454/" rel="bookmark">Pixel-perfect stamps</a></li><li><a href="http://uneasysilence.com/archive/2006/07/6911/" rel="bookmark">Pixel ads graduates to the real world</a></li><li><a href="http://uneasysilence.com/archive/2005/09/4149/" rel="bookmark">$1 per pixel on The Million Dollar Homepage</a></li><li><a href="http://uneasysilence.com/archive/2005/06/3507/" rel="bookmark">PixelRoller - Pixel painting roller</a></li></ul></div><div style="display:block"><small><em><a href="http://uneasysilence.com/archive/2008/02/12958/#comments">Leave A Comment</a></em></small></div>]]></description>
			<content:encoded><![CDATA[<p><a href='http://uneasysilence.com/media/2008/02/kdp.jpg' title='kdp.jpg'><img src='http://uneasysilence.com/media/2008/02/kdp.jpg' alt='kdp.jpg' /></a></p>
<p>Kill Dead Pixel is a new game where you play a lowly computer user who found a dead pixel on his LCD monitor and wants to try fixing it. Actually, sorry, it&#8217;s not a game, but pretty much just reality. So if you&#8217;re in the position above and want to try fixing a dead pixel, give this site a try. Simply drag the graphic to the dead pixel and leave it for an hour. If it doesn&#8217;t work, go in full screen mode and try it out for 12 hours. I sadly have no dead pixels to tell you if this works or not, but if any of you have use for this and try it out, let us know how it goes. Now I just need to figure out if killing a dead pixel means it&#8217;s now a brain-eating undead zombie pixel.</p>
<p><a href="http://killdeadpixel.com">Try It.</a></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://uneasysilence.com/archive/2007/04/10188/" rel="bookmark">Create Your Own Pixel Animations</a></li><li><a href="http://uneasysilence.com/archive/2006/08/7454/" rel="bookmark">Pixel-perfect stamps</a></li><li><a href="http://uneasysilence.com/archive/2006/07/6911/" rel="bookmark">Pixel ads graduates to the real world</a></li><li><a href="http://uneasysilence.com/archive/2005/09/4149/" rel="bookmark">$1 per pixel on The Million Dollar Homepage</a></li><li><a href="http://uneasysilence.com/archive/2005/06/3507/" rel="bookmark">PixelRoller - Pixel painting roller</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://uneasysilence.com/archive/2008/02/12958/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Visualizing Fitts&#8217;s Law</title>
		<link>http://uneasysilence.com/archive/2007/10/12453/</link>
		<comments>http://uneasysilence.com/archive/2007/10/12453/#comments</comments>
		<pubDate>Thu, 11 Oct 2007 13:19:40 +0000</pubDate>
		<dc:creator>Dan Lurie</dc:creator>
				<category><![CDATA[Howto]]></category>

		<guid isPermaLink="false">http://uneasysilence.com/archive/2007/10/12453/</guid>
		<description><![CDATA[<p><center><img src='http://uneasysilence.com/media/2007/10/partifits.jpg' alt='partifits.jpg' /></center></p>
<p>Published in 1954, Fitts&#8217;s Law is one of the most important governing rules of good interaction and usability design. It&#8217;s a pretty complex and multi-layered concept, and while easy enough to explain in words, to really get a good understanding of it, one really needs pictures. The stunningly designed Particletree has a very good <a href="http://particletree.com/features/visualizing-fittss-law/">visual breakdown</a> of the law, and some good commentary on best practices for its application. If you do any sort of UI design, you really do need to check this out.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://uneasysilence.com/archive/2007/04/10306/" rel="bookmark">Good vs. Evil Foosball</a></li><li><a href="http://uneasysilence.com/archive/2007/10/12390/" rel="bookmark">Techmeme Launches Leaderboard</a></li><li><a href="http://uneasysilence.com/archive/2007/07/11448/" rel="bookmark">Disappearing Door Concept Lincoln</a></li><li><a href="http://uneasysilence.com/archive/2007/11/12630/" rel="bookmark">New Zunes Hitting The Stores</a></li><li><a href="http://uneasysilence.com/archive/2007/08/11783/" rel="bookmark">Sexiest iPod Battery Pack, Ever!</a></li></ul></div><div style="display:block"><small><em><a href="http://uneasysilence.com/archive/2007/10/12453/#comments">Leave A Comment</a></em></small></div>]]></description>
			<content:encoded><![CDATA[<p><center><img src='http://uneasysilence.com/media/2007/10/partifits.jpg' alt='partifits.jpg' /></center></p>
<p>Published in 1954, Fitts&#8217;s Law is one of the most important governing rules of good interaction and usability design. It&#8217;s a pretty complex and multi-layered concept, and while easy enough to explain in words, to really get a good understanding of it, one really needs pictures. The stunningly designed Particletree has a very good <a href="http://particletree.com/features/visualizing-fittss-law/">visual breakdown</a> of the law, and some good commentary on best practices for its application. If you do any sort of UI design, you really do need to check this out.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://uneasysilence.com/archive/2007/04/10306/" rel="bookmark">Good vs. Evil Foosball</a></li><li><a href="http://uneasysilence.com/archive/2007/10/12390/" rel="bookmark">Techmeme Launches Leaderboard</a></li><li><a href="http://uneasysilence.com/archive/2007/07/11448/" rel="bookmark">Disappearing Door Concept Lincoln</a></li><li><a href="http://uneasysilence.com/archive/2007/11/12630/" rel="bookmark">New Zunes Hitting The Stores</a></li><li><a href="http://uneasysilence.com/archive/2007/08/11783/" rel="bookmark">Sexiest iPod Battery Pack, Ever!</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://uneasysilence.com/archive/2007/10/12453/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New Apple Keyboard has smart caps lock avoidance</title>
		<link>http://uneasysilence.com/archive/2007/10/12426/</link>
		<comments>http://uneasysilence.com/archive/2007/10/12426/#comments</comments>
		<pubDate>Fri, 05 Oct 2007 14:02:35 +0000</pubDate>
		<dc:creator>Dan Lurie</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[Geeky]]></category>
		<category><![CDATA[Howto]]></category>

		<guid isPermaLink="false">http://uneasysilence.com/archive/2007/10/12426/</guid>
		<description><![CDATA[<p><center><img src='http://uneasysilence.com/media/2007/10/wired_keyboard20070813.gif' alt='wired_keyboard20070813.gif' /></center></p>
<p>The engineers in Cupertino aren&#8217;t historically ones to keep old technology around in their products for sentimental– or even practical– reasons. Apple was the first major computer manufacturer to move their entire product line to USB peripherals, the first to make FireWire standard, and one of the first to offer notebooks with ExpressCard instead of PCMCIA.</p>
<p>It makes one wonder then why on earth they&#8217;ve kept that useless caps lock key around. Sure, its part of the standard keyboard layout (and arguably not for much longer– the OLPC has no such key), but since when has Apple really cared that much about standards? </p>
<p>It seems, though, that even if Apple isn&#8217;t dropping caps lock all together, they&#8217;re at least making it less of a nuisance to those of us WHO DON&#8217;T SEND EVERY EMAIL AS IF WE&#8217;RE YELLING ACROSS A CROWDED CITY STREET.</p>
<p>Jonathan Rentzsch of Red Shed software has <a href="http://rentzsch.com/notes/applesantiCAPSLOCK">figured out</a> that the slim new Apple Keyboards are smart enough to ignore accidental caps lock activation. A quick jab at the key, such as the kind one would do on accident, is insufficient to trigger virtual screaming. Instead, users must hold the key down for a few milliseconds to get the undesired result. All the gory details, plus video, at Wolf&#8217;s site. </p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://uneasysilence.com/archive/2007/02/9532/" rel="bookmark">HOW TO DISABLE THE CAPS LOCK KEY</a></li><li><a href="http://uneasysilence.com/archive/2007/08/11778/" rel="bookmark">WTF: New Apple Keyboards</a></li><li><a href="http://uneasysilence.com/archive/2007/03/9864/" rel="bookmark">The S&M Side of Master Lock</a></li><li><a href="http://uneasysilence.com/archive/2006/12/8594/" rel="bookmark">Apple mistakingly ships an iPod enabled keyboard?</a></li><li><a href="http://uneasysilence.com/archive/2008/02/13004/" rel="bookmark">Apple Notebook Updates</a></li></ul></div><div style="display:block"><small><em><a href="http://uneasysilence.com/archive/2007/10/12426/#comments">Leave A Comment</a></em></small></div>]]></description>
			<content:encoded><![CDATA[<p><center><img src='http://uneasysilence.com/media/2007/10/wired_keyboard20070813.gif' alt='wired_keyboard20070813.gif' /></center></p>
<p>The engineers in Cupertino aren&#8217;t historically ones to keep old technology around in their products for sentimental– or even practical– reasons. Apple was the first major computer manufacturer to move their entire product line to USB peripherals, the first to make FireWire standard, and one of the first to offer notebooks with ExpressCard instead of PCMCIA.</p>
<p>It makes one wonder then why on earth they&#8217;ve kept that useless caps lock key around. Sure, its part of the standard keyboard layout (and arguably not for much longer– the OLPC has no such key), but since when has Apple really cared that much about standards? </p>
<p>It seems, though, that even if Apple isn&#8217;t dropping caps lock all together, they&#8217;re at least making it less of a nuisance to those of us WHO DON&#8217;T SEND EVERY EMAIL AS IF WE&#8217;RE YELLING ACROSS A CROWDED CITY STREET.</p>
<p>Jonathan Rentzsch of Red Shed software has <a href="http://rentzsch.com/notes/applesantiCAPSLOCK">figured out</a> that the slim new Apple Keyboards are smart enough to ignore accidental caps lock activation. A quick jab at the key, such as the kind one would do on accident, is insufficient to trigger virtual screaming. Instead, users must hold the key down for a few milliseconds to get the undesired result. All the gory details, plus video, at Wolf&#8217;s site. </p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://uneasysilence.com/archive/2007/02/9532/" rel="bookmark">HOW TO DISABLE THE CAPS LOCK KEY</a></li><li><a href="http://uneasysilence.com/archive/2007/08/11778/" rel="bookmark">WTF: New Apple Keyboards</a></li><li><a href="http://uneasysilence.com/archive/2007/03/9864/" rel="bookmark">The S&M Side of Master Lock</a></li><li><a href="http://uneasysilence.com/archive/2006/12/8594/" rel="bookmark">Apple mistakingly ships an iPod enabled keyboard?</a></li><li><a href="http://uneasysilence.com/archive/2008/02/13004/" rel="bookmark">Apple Notebook Updates</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://uneasysilence.com/archive/2007/10/12426/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Genius Bar Fixing Some Bricked iPhones; How to get yours fixed too</title>
		<link>http://uneasysilence.com/archive/2007/09/12371/</link>
		<comments>http://uneasysilence.com/archive/2007/09/12371/#comments</comments>
		<pubDate>Fri, 28 Sep 2007 20:29:16 +0000</pubDate>
		<dc:creator>Dan Lurie</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[Howto]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://uneasysilence.com/archive/2007/09/12371/</guid>
		<description><![CDATA[<p><center><img src='http://uneasysilence.com/media/2007/09/675230772_2e002c0088.jpg' alt='675230772_2e002c0088.jpg' /></center></p>
<p>Apple may be a cold, uncaring faceless corporation; absent any empathy for your bricked iPhone plight, but their employees are a different story. Mac Genius&#8217;s have long had the power to bend the rules under special circumstances, and it seems the trend is continuing with reports coming in that some very lucky hackers have had their iPhone&#8217;s <a href="http://www.boygeniusreport.com/2007/09/28/apple-geniuses-quietly-unbricking-illicit-iphones/">restored by a caring Genius</a>. If this is true, Apple has a secret re-locking app that they only make available to their employees. What I wouldn&#8217;t give to get my hand on that hunk of code!</p>
<p>I&#8217;m lucky to not have to try this, but here are a few tips for garnering the sympathy of your local Genius:</p>
<p>- <strong>Act Stupid:</strong> &#8220;My friend/brother/dealer gave me this iPhone for my birthday/graduation, and when I tried to update it last night, it stopped working!&#8221; Don&#8217;t say brick, don&#8217;t be geeky– act the way your grandma would if she was in your position. Refuse to accept that someone &#8220;unlocked&#8221; your phone, and make sure to ask what unlocking is.</p>
<p>– <strong>Find a Geeky Genius:</strong> A lot of people unlocked their iPhones just so they could see what happened and have the experience of doing so– something that anyone with the hacking gene can sympathize with. Hang around and try to spot the guy at the bar with the most passion for technology and least concern for the corporate line.</p>
<p>– <strong>Beg:</strong> If all else fails, resort to pleading. These guys are busy, and would rather just re-lock the thing instead of having you standing there for an hour arguing with them.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://uneasysilence.com/archive/2007/09/12324/" rel="bookmark">Apple Say's Tough Luck With Your Unlocked iPhone</a></li><li><a href="http://uneasysilence.com/archive/2008/10/13567/" rel="bookmark">AT&T Offers Free WiFi to iPhone and Blackberry Users... Now Here is How to Use It on Your Laptop</a></li><li><a href="http://uneasysilence.com/archive/2007/06/11303/" rel="bookmark">AT&amp;T billing systems crash for iPhone customers</a></li><li><a href="http://uneasysilence.com/archive/2007/09/12232/" rel="bookmark">How to Unlock Your iPhone and Use The $5.99 T-Zones Plan</a></li><li><a href="http://uneasysilence.com/archive/2008/09/13449/" rel="bookmark">Pssssst... Prepaid TMobile Users, You Get Full Free Internet With the iPhone</a></li></ul></div><div style="display:block"><small><em><a href="http://uneasysilence.com/archive/2007/09/12371/#comments">Leave A Comment</a></em></small></div>]]></description>
			<content:encoded><![CDATA[<p><center><img src='http://uneasysilence.com/media/2007/09/675230772_2e002c0088.jpg' alt='675230772_2e002c0088.jpg' /></center></p>
<p>Apple may be a cold, uncaring faceless corporation; absent any empathy for your bricked iPhone plight, but their employees are a different story. Mac Genius&#8217;s have long had the power to bend the rules under special circumstances, and it seems the trend is continuing with reports coming in that some very lucky hackers have had their iPhone&#8217;s <a href="http://www.boygeniusreport.com/2007/09/28/apple-geniuses-quietly-unbricking-illicit-iphones/">restored by a caring Genius</a>. If this is true, Apple has a secret re-locking app that they only make available to their employees. What I wouldn&#8217;t give to get my hand on that hunk of code!</p>
<p>I&#8217;m lucky to not have to try this, but here are a few tips for garnering the sympathy of your local Genius:</p>
<p>- <strong>Act Stupid:</strong> &#8220;My friend/brother/dealer gave me this iPhone for my birthday/graduation, and when I tried to update it last night, it stopped working!&#8221; Don&#8217;t say brick, don&#8217;t be geeky– act the way your grandma would if she was in your position. Refuse to accept that someone &#8220;unlocked&#8221; your phone, and make sure to ask what unlocking is.</p>
<p>– <strong>Find a Geeky Genius:</strong> A lot of people unlocked their iPhones just so they could see what happened and have the experience of doing so– something that anyone with the hacking gene can sympathize with. Hang around and try to spot the guy at the bar with the most passion for technology and least concern for the corporate line.</p>
<p>– <strong>Beg:</strong> If all else fails, resort to pleading. These guys are busy, and would rather just re-lock the thing instead of having you standing there for an hour arguing with them.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://uneasysilence.com/archive/2007/09/12324/" rel="bookmark">Apple Say's Tough Luck With Your Unlocked iPhone</a></li><li><a href="http://uneasysilence.com/archive/2008/10/13567/" rel="bookmark">AT&T Offers Free WiFi to iPhone and Blackberry Users... Now Here is How to Use It on Your Laptop</a></li><li><a href="http://uneasysilence.com/archive/2007/06/11303/" rel="bookmark">AT&amp;T billing systems crash for iPhone customers</a></li><li><a href="http://uneasysilence.com/archive/2007/09/12232/" rel="bookmark">How to Unlock Your iPhone and Use The $5.99 T-Zones Plan</a></li><li><a href="http://uneasysilence.com/archive/2008/09/13449/" rel="bookmark">Pssssst... Prepaid TMobile Users, You Get Full Free Internet With the iPhone</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://uneasysilence.com/archive/2007/09/12371/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
