<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>outbreak</title>
	
	<link>http://friedcell.net/outbreak</link>
	<description>bursts of ideas and rants by the alterego</description>
	<pubDate>Wed, 24 Feb 2010 14:28:19 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/outbreak" /><feedburner:info uri="outbreak" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>jQuery 1.4 and 1.4.1 considered harmful - use jQuery 1.4.2!</title>
		<link>http://feedproxy.google.com/~r/outbreak/~3/DJJ5-53i770/</link>
		<comments>http://friedcell.net/outbreak/2010/02/24/jquery-14-and-141-considered-harmful/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 14:11:08 +0000</pubDate>
		<dc:creator>fry</dc:creator>
		
		<category><![CDATA[blurps]]></category>

		<guid isPermaLink="false">http://friedcellcollective.net/outbreak/?p=280</guid>
		<description>I never thought I&amp;#8217;d write a &amp;#8220;considered harmful&amp;#8221; post, but this is really way too serious.
Do not use jQuery 1.4 or 1.4.1 with user generated content!
jQuery 1.4 branch added some great stuff, but let a really ugly bug through. Something that you could call jQuery injection.
replaceWith: function( value ) {
	if ( this[0] &amp;#38;&amp;#38; this[0].parentNode ) [...]</description>
			<content:encoded><![CDATA[<p>I never thought I&#8217;d write a &#8220;<a href="http://meyerweb.com/eric/comment/chech.html">considered harmful</a>&#8221; post, but this is really way too serious.</p>
<h3>Do not use jQuery 1.4 or 1.4.1 with user generated content!</h3>
<p><a class="zem_slink freebase/en/jquery" title="JQuery" rel="homepage" href="http://jquery.com/">jQuery</a> 1.4 branch added some great stuff, but let a really ugly bug through. Something that you could call <strong>jQuery injection</strong>.</p>
<pre><code>replaceWith: function( value ) {
	if ( this[0] &amp;&amp; this[0].parentNode ) {
		// Make sure that the elements are removed from the DOM before they are inserted
		// this can help fix replacing a parent with child elements
		if ( !jQuery.isFunction( value ) ) {
			value = jQuery( value ).detach();
		}
&#8230;
</code></pre>
<p>With previous versions you could easily do <code>$('#myElement').replaceWith('some text');</code> to replace the selected node with a text node. In jQuery 1.4 and 1.4.1 you can&#8217;t - but just failing does not constitute a huge bug.</p>
<p>If you take a good look at the code above you can easily find that if <code>value</code> passed is a  <code>string</code> that looks like a selector, it will <strong>detach nodes from the document</strong>. Consider calling <code>$('#myElement').replaceWith('html');</code> - the screen goes blank and everything the user has been working on is gone.</p>
<h3>Fortunately&#8230;</h3>
<p><strong>jQuery 1.4.2 fixed this issue</strong> by properly using detach only when <code>value</code> is not a <code>string</code>. If you are using jQuery 1.4 or 1.4.1 and for some reason cannot upgrade to 1.4.2 (or just don&#8217;t want to), you can still just copy the whole <code>replaceWith</code> method from jQuery 1.4.2 to your version.</p>
<h6 class="zemanta-related-title">Related articles by Zemanta</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://java.sys-con.com/node/1179088">101 on jQuery Selector Performance</a> (java.sys-con.com)</li>
<li class="zemanta-article-ul-li"><a href="http://www.sitepoint.com/blogs/2010/02/24/learn-jquery/">It&#8217;s Easy to Fall in Love with jQuery</a> (sitepoint.com)</li>
<li class="zemanta-article-ul-li"><a href="http://oreilly.com/catalog/9780980576856/">jQuery: Novice to Ninja</a> (oreilly.com)</li>
</ul>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/f26232c7-fdf3-43ba-9caa-9d33dd6899c0/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=f26232c7-fdf3-43ba-9caa-9d33dd6899c0" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related more-info pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>

<p><a href="http://feedads.g.doubleclick.net/~a/gghysEiiAcPsqZBmzX2DPvWuo6s/0/da"><img src="http://feedads.g.doubleclick.net/~a/gghysEiiAcPsqZBmzX2DPvWuo6s/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/gghysEiiAcPsqZBmzX2DPvWuo6s/1/da"><img src="http://feedads.g.doubleclick.net/~a/gghysEiiAcPsqZBmzX2DPvWuo6s/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/outbreak?a=DJJ5-53i770:mjgTKbhOFjg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/outbreak?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=DJJ5-53i770:mjgTKbhOFjg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/outbreak?i=DJJ5-53i770:mjgTKbhOFjg:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=DJJ5-53i770:mjgTKbhOFjg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/outbreak?i=DJJ5-53i770:mjgTKbhOFjg:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://friedcell.net/outbreak/2010/02/24/jquery-14-and-141-considered-harmful/feed/</wfw:commentRss>
		<feedburner:origLink>http://friedcell.net/outbreak/2010/02/24/jquery-14-and-141-considered-harmful/</feedburner:origLink></item>
		<item>
		<title>Setting innerHTML wraps content with DIVs!?</title>
		<link>http://feedproxy.google.com/~r/outbreak/~3/eI8VKNLnuUQ/</link>
		<comments>http://friedcell.net/outbreak/2010/02/24/setting-innerhtml-wraps-content-with-divs/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 11:53:50 +0000</pubDate>
		<dc:creator>fry</dc:creator>
		
		<category><![CDATA[blurps]]></category>

		<guid isPermaLink="false">http://friedcellcollective.net/outbreak/?p=279</guid>
		<description>Trying to add some HTML to an element with innerHTML and weird stuff happens in Firefox (3.5, 3.6)?
var elm = document.getElementById('myElement');
elm.innerHTML = 'Test';
alert(elm.innerHTML);
// alerts '&amp;#60;div xmlns="http://www.w3.org/1999/xhtml"&amp;#62;Test&amp;#60;/div&amp;#62;'

I just figured out the problem is that one of myElement ancestors is attached to a table as a non-table element. In my case there was a div attached to [...]</description>
			<content:encoded><![CDATA[<p>Trying to add some <a class="zem_slink freebase/en/html" href="http://en.wikipedia.org/wiki/HTML" title="HTML" rel="wikipedia">HTML</a> to an element with innerHTML and weird stuff happens in Firefox (3.5, 3.6)?</p>
<pre><code>var elm = document.getElementById('myElement');
elm.innerHTML = 'Test';
alert(elm.innerHTML);
// alerts '&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Test&lt;/div&gt;'
</code></pre>
<p>I just figured out the problem is that one of <em>myElement</em> ancestors is attached to a table as a non-table element. In my case there was a <code>div</code> attached to a <code>tr</code>. Changing that <code>div</code> to <code>td</code> fixed the problem.</p>
<p title="I don't think any webdeveloper really said this, I just decided I need another paragraph:)">And they say web development isn&#8217;t full of surprises&#8230;</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/b6295000-ad04-47d4-b392-7b4e3b9eb67a/" title="Reblog this post [with Zemanta]"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=b6295000-ad04-47d4-b392-7b4e3b9eb67a" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related more-info pretty-attribution"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>

<p><a href="http://feedads.g.doubleclick.net/~a/apHGL1PGYb5oeRw4WaqlVL68MGs/0/da"><img src="http://feedads.g.doubleclick.net/~a/apHGL1PGYb5oeRw4WaqlVL68MGs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/apHGL1PGYb5oeRw4WaqlVL68MGs/1/da"><img src="http://feedads.g.doubleclick.net/~a/apHGL1PGYb5oeRw4WaqlVL68MGs/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/outbreak?a=eI8VKNLnuUQ:rYR3f7Beczs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/outbreak?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=eI8VKNLnuUQ:rYR3f7Beczs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/outbreak?i=eI8VKNLnuUQ:rYR3f7Beczs:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=eI8VKNLnuUQ:rYR3f7Beczs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/outbreak?i=eI8VKNLnuUQ:rYR3f7Beczs:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://friedcell.net/outbreak/2010/02/24/setting-innerhtml-wraps-content-with-divs/feed/</wfw:commentRss>
		<feedburner:origLink>http://friedcell.net/outbreak/2010/02/24/setting-innerhtml-wraps-content-with-divs/</feedburner:origLink></item>
		<item>
		<title>Screwing up conversion rates</title>
		<link>http://feedproxy.google.com/~r/outbreak/~3/YK68jxNZXU8/</link>
		<comments>http://friedcell.net/outbreak/2010/01/31/screwing-up-conversion-rates/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 16:16:45 +0000</pubDate>
		<dc:creator>fry</dc:creator>
		
		<category><![CDATA[services]]></category>

		<category><![CDATA[thoughts]]></category>

		<guid isPermaLink="false">http://friedcellcollective.net/outbreak/?p=272</guid>
		<description>By far the best way to screw up your conversion rates is to go mainstream.

The traffic graph is the number of visitors per day while the conversion rate is the percentage of the visitors converted. When you go mainstream your traffic will spike and plateau at a lower level a few days later. This will [...]</description>
			<content:encoded><![CDATA[<p>By far the best way to screw up your conversion rates is to go mainstream.</p>
<p><img src="http://static.marela.si/users0/fry/3/zccPWZnUtSNu50wMk9HIFTHl3DM.jpg" alt="Traffic - conversion graph" height="252" width="400" /></p>
<p>The traffic graph is the number of visitors per day while the <a class="zem_slink freebase/guid/9202a8c04000641f8000000000ea1a8f" title="Conversion rate" rel="wikipedia" href="http://en.wikipedia.org/wiki/Conversion_rate">conversion rate</a> is the percentage of the visitors converted. When you go mainstream your traffic will spike and plateau at a lower level a few days later. This will <strong>screw up</strong> your conversion rate. Don&#8217;t worry though - figure out who the visitors are and fix your <a class="zem_slink freebase/guid/9202a8c04000641f800000000081685f" title="Landing page" rel="wikipedia" href="http://en.wikipedia.org/wiki/Landing_page">landing pages</a> to target them as good as you can.</p>
<p>This graph obviously focuses on start-ups that have a <em>huge</em> conversion rate at the beginning as most of the conversion happens on tech-news sites and only already &#8220;converted&#8221; people get to your page - conversion rates of 80% are common in such cases. It should also be valid for later stage companies, but you need to adjust the conversion rate numbers. Another fact of conversion rates is that as your number of visitors grows your conversion rate will drop due to the fact that more users will be &#8220;just browsing&#8221; (think about a store in a mall).</p>
<p>If you don&#8217;t belive me think about the what the <a class="zem_slink freebase/guid/9202a8c04000641f800000000484d119" title="Twitter" rel="homepage" href="http://twitter.com/">Twitter</a> homepage looked like in time. The first one I saw had the public stream on it - geeky as hell. They changed that into a still somewhat geeky homepage that explained what Twitter is and helped you register. The latest one is almost non-geeky and focuses on real-time search and has a prominent sign up button.</p>
<h6 class="zemanta-related-title">Related articles by Zemanta</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://www.seomoz.org/blog/11-conversion-lessons-learned-2009">Conversion Rate Optimization Lessons Learned in 2009</a> (seomoz.org)</li>
<li class="zemanta-article-ul-li"><a href="http://altitudebranding.com/2010/01/breaking-a-goal-into-metrics/">Breaking A Goal Into Metrics</a> (altitudebranding.com)</li>
</ul>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/b895aee9-d624-4f3f-84ea-3879011f8c75/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=b895aee9-d624-4f3f-84ea-3879011f8c75" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>

<p><a href="http://feedads.g.doubleclick.net/~a/0E44Zowt1fPzB4l1gleO4lx-jX8/0/da"><img src="http://feedads.g.doubleclick.net/~a/0E44Zowt1fPzB4l1gleO4lx-jX8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/0E44Zowt1fPzB4l1gleO4lx-jX8/1/da"><img src="http://feedads.g.doubleclick.net/~a/0E44Zowt1fPzB4l1gleO4lx-jX8/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/outbreak?a=YK68jxNZXU8:2S6aBTX9YLA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/outbreak?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=YK68jxNZXU8:2S6aBTX9YLA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/outbreak?i=YK68jxNZXU8:2S6aBTX9YLA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=YK68jxNZXU8:2S6aBTX9YLA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/outbreak?i=YK68jxNZXU8:2S6aBTX9YLA:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://friedcell.net/outbreak/2010/01/31/screwing-up-conversion-rates/feed/</wfw:commentRss>
		<feedburner:origLink>http://friedcell.net/outbreak/2010/01/31/screwing-up-conversion-rates/</feedburner:origLink></item>
		<item>
		<title>Fluid searchbox</title>
		<link>http://feedproxy.google.com/~r/outbreak/~3/JRpk_6q5puU/</link>
		<comments>http://friedcell.net/outbreak/2009/10/04/fluid-searchbox/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 19:16:50 +0000</pubDate>
		<dc:creator>fry</dc:creator>
		
		<category><![CDATA[browsers]]></category>

		<category><![CDATA[css]]></category>

		<category><![CDATA[firefox]]></category>

		<category><![CDATA[html]]></category>

		<category><![CDATA[ie]]></category>

		<category><![CDATA[opera]]></category>

		<category><![CDATA[safari]]></category>

		<category><![CDATA[software]]></category>

		<category><![CDATA[technology]]></category>

		<category><![CDATA[vista]]></category>

		<guid isPermaLink="false">http://friedcellcollective.net/outbreak/?p=257</guid>
		<description>There&amp;#8217;s been a lot of fluid layouts recently. When you use a fluid layout it&amp;#8217;s hard to make everything fluid as you need to stretch certain elements and have other elements fixed.
I was approached some time ago by a designer who was working on a fluid design but was having problems with a HTML/CSS only [...]</description>
			<content:encoded><![CDATA[<p>There&#8217;s been a lot of fluid layouts recently. When you use a fluid layout it&#8217;s hard to make everything fluid as you need to stretch certain elements and have other elements fixed.</p>
<p>I was approached some time ago by a designer who was working on a fluid design but was having problems with a HTML/CSS only solution for a fluid searchbox. The idea to create a searchbox that grows when the window grows is simple, but becomes a tad more difficult when you add stuff to the left and right of it, some being fixed width (width in px or em) and some fluid width (width in %).</p>
<p>As I like challenges I took it on and produced a sample that worked on most modern browsers in a single evening. They didn&#8217;t like it because it didn&#8217;t work in IE7 (cause I never checked it) even though the fix for IE (it was only IE7 that didn&#8217;t work) was trivial. After a while I went back and checked it out again, changed the code a bit and I think it&#8217;s much better now.</p>
<h3>The simple form</h3>
<p>Creating a fluid search box when you only have a single element next to it is trivial. What you do is wrap the input in an element and use padding to create space for the fixed element, then position the fixed element absolutely (or relatively) in the space created by the padding.</p>
<h5>HTML:</h5>
<pre><code>&lt;fieldset&gt;
	&lt;div&gt;
		&lt;input type="text" name="q" value="" /&gt;
	&lt;/div&gt;
	&lt;input class="s" type="submit" value="Search" /&gt;
&lt;/fieldset&gt;</code></pre>
<h5>CSS:</h5>
<pre><code>fieldset {position:relative;padding:0;}
div {padding-right:6em;}
div input {width:100%;}
input.s {width:5em;font-size:1em;position:absolute;right:0;top:0;}</code></pre>
<h5>Sample</h5>
<form action="#" method="get"> <fieldset style="padding: 0pt; position: relative;"></p>
<div style="padding-right: 6em;">
<input style="width: 100%;" name="q" type="text" /></div>
<input class="s" style="position: absolute; right: 0pt; top: 0pt; font-size: 1em; width: 5em;" type="submit" value="Search" />
<p></fieldset><br />
</form>
<p>You could target the input with <code>input[type=submit]</code> but that wouldn&#8217;t work in older browsers.</p>
<h3>A complex form</h3>
<p>The complex form from the intro includes a title, a search type drop-down (select element), the input box and a submit button. This gives us four elements, two of which are fixed and two fluid - and more stuff to hack around.</p>
<h5>HTML</h5>
<pre><code>&lt;fieldset&gt;
	&lt;div class="l"&gt;
		&lt;span&gt;Find&lt;/span&gt;
		&lt;select name="type"&gt;
			&lt;option&gt;in Books&lt;/option&gt;
			&lt;option&gt;in DVDs&lt;/option&gt;
		&lt;/select&gt;
	&lt;/div&gt;
	&lt;div class="c"&gt;
		&lt;input type="text" value="" name="q" /&gt;
	&lt;/div&gt;
	&lt;div class="r"&gt;
		&lt;input type="submit" value="Search" /&gt;
	&lt;/div&gt;
&lt;/fieldset&gt;</code></pre>
<h5>CSS</h5>
<pre><code>fieldset {margin:0;padding:0;position:relative;border:0;}
fieldset .l {height:0;}
fieldset .l span {width:3em;display:inline-block;}
fieldset .l select {width:10%;}
fieldset .c {margin:0 60px 0 4em;padding:0 .7em 0 10%;}
fieldset .c input {width:100%;}
fieldset .r {position:absolute;right:0;top:0;}
fieldset .r input {width:60px;}
* html fieldset .l {float:left;width:100%;margin-right:-100%;}</code></pre>
<h4>The basics</h4>
<p>I created three elements that help me align elements. I&#8217;m using classes l for left, c for center and r for right. The left element includes the title and the type, the central element includes the search box and the right element includes the submit button.</p>
<pre><code>fieldset .l {height:0;}
fieldset .r {position:absolute;right:0;top:0;}</code></pre>
<p>The left element has its height set to 0 so it seemingly doesn&#8217;t take any space. The central element includes the input and needs no special positioning, while the right element is positioned similar to the simple solution - absolute and set to right.</p>
<h4>The surrounding elements</h4>
<p>You can set the width of these elements in any unit you like. I set the width for the span element in em, type drop-down in % to make it fluid and submit button in px.</p>
<pre><code>fieldset .l span {width:3em;display:inline-block;}
fieldset .l select {width:10%;}
fieldset .r input {width:60px;}</code></pre>
<p>The only thing you need to do in CSS is set the width to these elements. You need to set the display property on the span element to work around the fact that inline elements don&#8217;t allow setting of width.</p>
<h4>The fluid input</h4>
<pre><code>fieldset .c {margin:0 60px 0 4em;padding:0 .7em 0 10%;}
fieldset .c input {width:100%;}</code></pre>
<p>The input needs its width set to 100% so it will stretch the whole available width of the parent. That happens due to the fact that block-level elements will grow to 100% automatically and the margin and padding will &#8220;shrink&#8221; its contents. This allows setting the spacing in two different units - one for margin and one for padding. If you look at the CSS rule, you&#8217;ll see that the widths are similar to those set for the surrounding elements - of course with some spacing added.</p>
<ul>
<li>Right: 60px margin (width of the submit button), .7em padding (spacing)</li>
<li>Left: 4em margin (3em for the title + spacing), 10% padding (type select width)</li>
</ul>
<h4>The browsers</h4>
<p>You can check out <a href="http://friedcellcollective.net/fluidtest.html">a sample page with the complex form</a>. Working on Windows I&#8217;ve tested it in these browsers:</p>
<ul>
<li>Firefox: 2.0, 3.0, 3.5</li>
<li>Opera: 10</li>
<li>Safari: 4</li>
<li>Google Chrome: 3</li>
<li>Internet Explorer: 8 (with its rendering of IE7 Standards and Quirks)</li>
</ul>
<p>As always at least one browser had to fail - IE6 did. The problem was <code>height:0;</code> as IE6 will render elements as high as their content. We can work around this by changing the way we make it zero width/height so it doesn&#8217;t affect the central element.</p>
<pre><code>* html fieldset .l {float:left;width:100%;margin-right:-100%;}</code></pre>
<p>I&#8217;m using the IE6 CSS filter to target IE6, you can use conditional comments or whatever you like best. The rule floats the element left, making it 100% wide, but resets the position by setting the right margin to -100%.</p>
<p>As I&#8217;m using <code>display:inline-block;</code> this will work a bit different on browsers that don&#8217;t support inline-block. In Firefox 2.0 you can use <code>display:-moz-inline-box;</code> in the rule for the <code>span</code>, but make sure you put it before the <code>inline-block</code>.</p>
<pre><code>fieldset .l span {width:3em;display:-moz-inline-box;display:inline-block;}</code></pre>
<h4>Last words</h4>
<p>You might want to fix some stuff in some browsers so everything aligns nice. The techinque used is derived from the <a href="http://meyerweb.com/eric/thoughts/2005/11/09/multi-unit-any-order-columns/">multi-unit any-order column layout</a> by <a class="zem_slink freebase/guid/9202a8c04000641f800000000024c5db" title="Eric Meyer" rel="wikipedia" href="http://en.wikipedia.org/wiki/Eric_Meyer">Eric Meyer</a> as it opens your mind on how to use multiple units in a single layout without fuss. I&#8217;ve tried all the browsers I have on my dev machine and I&#8217;m not saying it works everywhere. If you find a browser where it doesn&#8217;t post a comment; if you find a better way of doing things also post a comment.</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/6a47e4e4-04fd-4357-b788-c5ea937c07fa/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=6a47e4e4-04fd-4357-b788-c5ea937c07fa" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>

<p><a href="http://feedads.g.doubleclick.net/~a/y4phZpqXB9VcEugfwEdcVtYVvdc/0/da"><img src="http://feedads.g.doubleclick.net/~a/y4phZpqXB9VcEugfwEdcVtYVvdc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/y4phZpqXB9VcEugfwEdcVtYVvdc/1/da"><img src="http://feedads.g.doubleclick.net/~a/y4phZpqXB9VcEugfwEdcVtYVvdc/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/outbreak?a=JRpk_6q5puU:OEt7fGxZdfs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/outbreak?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=JRpk_6q5puU:OEt7fGxZdfs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/outbreak?i=JRpk_6q5puU:OEt7fGxZdfs:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=JRpk_6q5puU:OEt7fGxZdfs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/outbreak?i=JRpk_6q5puU:OEt7fGxZdfs:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://friedcell.net/outbreak/2009/10/04/fluid-searchbox/feed/</wfw:commentRss>
		<feedburner:origLink>http://friedcell.net/outbreak/2009/10/04/fluid-searchbox/</feedburner:origLink></item>
		<item>
		<title>Hiring developers: King of the Hill effect</title>
		<link>http://feedproxy.google.com/~r/outbreak/~3/2BsY5GZd23M/</link>
		<comments>http://friedcell.net/outbreak/2009/08/14/hiring-developers-king-of-the-hill-effect/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 23:24:22 +0000</pubDate>
		<dc:creator>fry</dc:creator>
		
		<category><![CDATA[companies]]></category>

		<category><![CDATA[general]]></category>

		<category><![CDATA[technology]]></category>

		<category><![CDATA[thoughts]]></category>

		<category><![CDATA[zemanta]]></category>

		<guid isPermaLink="false">http://friedcellcollective.net/outbreak/?p=270</guid>
		<description>You might have noticed that we&amp;#8217;re hiring at Zemanta. As we&amp;#8217;re a start-up we&amp;#8217;re looking for experienced developers that can get to work right away. The environment of browsers and as if that&amp;#8217;s not enough blogging platforms and rich-text editors is very challenging so the bar is set quite high. As we were talking about [...]</description>
			<content:encoded><![CDATA[<p>You might have noticed that <a class="zem_olink" title="Know a JavaScript developer?" href="http://friedcellcollective.net/outbreak/2009/07/21/know-a-javascript-developer/">we&#8217;re hiring</a> at <a class="zem_slink" title="Zemanta" rel="homepage" href="http://www.zemanta.com">Zemanta</a>. As we&#8217;re a start-up we&#8217;re looking for experienced developers that can get to work right away. The environment of browsers and as if that&#8217;s not enough blogging platforms and rich-text editors is very challenging so the bar is set quite high. As we were talking about hiring a new person we tried to write a job description and application invitation that would set the bar high and also test some things we wanted to know before conducting the interviews. It seems we might have went a bit too far as we only got a few applications.</p>
<p>You always expect some people to send you a <a class="zem_slink freebase/guid/9202a8c04000641f800000000a1eb583" title="Application for employment" rel="wikipedia" href="http://en.wikipedia.org/wiki/Application_for_employment">job application</a> request that will not conform to what you&#8217;re requesting and that&#8217;s ok - you can easily ignore these applications. You will also always get some people who don&#8217;t fit the requirements by a mile but are trying to get &#8220;on the shortlist&#8221; for possible openings in the future - that&#8217;s ok too. And you&#8217;ll also get a lot of people that will value their own knowledge far more that they should - these are the ones I wanna talk about here.</p>
<p>You&#8217;ve probably met a bunch of &#8220;airheads&#8221;, &#8220;egomaniacs&#8221; or whatever you call the people that are full of themselves and describe their knowledge as expert but turn silent when you pop a simple advance question. I call them &#8220;king of the hill&#8221; types.</p>
<h3>Assessing your own knowledge is hard</h3>
<p>It&#8217;s in our nature to compare. My &#8220;house&#8221; is bigger than your &#8220;house&#8221; is part of our minds, even more so in <a class="zem_slink freebase/guid/9202a8c04000641f800000000003651a" title="Slovenia" rel="wikipedia" href="http://en.wikipedia.org/wiki/Slovenia">Slovenia</a>, a small market where basically everybody knows everybody. So it&#8217;s only natural that we assess our knowledge based on comparison. There&#8217;s an obvious problem with that - I will have no idea who you&#8217;re comparing yourself with and therefore your score will make no sense to me. In that sense it&#8217;s similar to confidence levels in search.</p>
<p>You might think setting a comparison chart would make the scores better, but it really doesn&#8217;t. If you tell a developer that he should assess his knowledge of a language based on a scale where 1 is &#8220;can read it&#8221; and 10 is &#8220;i invented it&#8221; you&#8217;ll get a lot of 8s. Which would mean they&#8217;re basically the best developer for that language in the country. When you do, you can easily think that the guy saying it is a moron and discard him as a viable candidate. And you&#8217;d be wrong doing that, at least sometimes.</p>
<h3>Are you King of the Hill?</h3>
<p>When people overestimate their knowledge it&#8217;s because of two basic reasons:</p>
<ol>
<li>They are genuine asswipes that think they know more than the guy that invented the language, but know showing they&#8217;re an egomaniac on the interview is not smart. So they&#8217;ll lower the score to an 8 to make you feel good. These guys are usually easy to recognize as they&#8217;ll be defensive and dismiss any questions they don&#8217;t know with something like &#8220;that sucks&#8221;, &#8220;i never need that&#8221;, &#8230;</li>
<li>They really have no idea what else is out there. I was sure that in the age of internet such people don&#8217;t exist anymore, but even in computer related industries you can easily find people that got stuck in a particular part of the web of amateur forums and people of the previous variety. This means they do actually know everything, but don&#8217;t realize that everything is a lot bigger than they know.</li>
</ol>
<p>But this is only a part of the story.</p>
<h3>Who to hire then?</h3>
<p>I&#8217;ve drawn a simple graph to help explain this:</p>
<div class="zemanta-img aligncenter"><a href="http://www.marela.si/photos/33761"><img src="http://static.marela.si/users0/fry/3/tDT0XvOUY671dbTLJ-g6t3HhmEE.jpg" alt="Don\'t hire the King of the Hill" /></a><span class="zemanta-img-attribution">Don&#8217;t hire the King of the Hill!</span></div>
<h4>The beginners</h4>
<p>As you start learning about something you&#8217;ll know that you know next to nothing. You&#8217;ll also see a lot you can learn and might even see where you want to get - as near to the &#8220;i inveted it&#8221; as possible. At that time your think you know less than you really do - these are the people <strong>you should hire</strong> only if you are willing to wait until they learn more and if you believe they can. As you learn and overcome the problems you thought were the &#8220;the big problems&#8221; you&#8217;ll go over the equilibrium and become a smart-ass.</p>
<h4>The kings</h4>
<p>This is where it gets interesting. Some people like to be king of the hill so they will ignore everything beyond that point. They will also make sure that people lower on the actual knowledge axis will not see over that point. They&#8217;ll have all sorts of reasons why everything beyond this point is crap. These are the people that make the most damage to development communities, as they&#8217;re usually the vocal ones. <strong>You should not hire them</strong>.</p>
<h4>The enlightened</h4>
<p>But as I said before they might really just have no idea what&#8217;s beyond that point. That&#8217;s easily solvable even during the interview - you can show them some code, throw around some ideas and arguments on why that&#8217;s good and some people will say &#8220;Wow, I didn&#8217;t even know all that is possible!&#8221; (yep, I actually got a response like that). <strong>You should hire this people immediately</strong> - seriously, don&#8217;t let them leave the interview without signing a contract. Tell them they&#8217;re the last interview before the decision and that you decided already and don&#8217;t need to wait. And because they&#8217;re now sure they know less than they really do, you&#8217;ll be able to get great <a class="zem_slink freebase/guid/9202a8c04000641f8000000000a7dc9e" title="Value (economics)" rel="wikipedia" href="http://en.wikipedia.org/wiki/Value_%28economics%29">value for money</a>.</p>
<p>You must however be really careful with developers in this stage. They will climb the curve fast and soon they&#8217;ll start whining about lack of challenging work. They&#8217;ll also start to want more money. They might even want to say they want to be a team leader. When they do, they&#8217;re really just saying they want more money. Don&#8217;t confuse expert developer knowledge for managerial skills!</p>
<h4>The experts</h4>
<p>The best you can do at this stage is making them architect or senior developer. And with that done you need to start sending them to topnotch conferences and encourage them to write papers trying to get a gig at one of them. They&#8217;ll meet with the inventors, see that they&#8217;re actually normal people with a unique set of knowledge that is much wider than they expected. The new &#8220;lack of focus&#8221; will keep them busy and inspire them. They might become a better developer or stay at the same level, but they&#8217;ll be happy. They&#8217;ll be the kid with a new toy. With the ability to find a new toy when this one gets boring. That&#8217;s what supporting <a class="zem_slink freebase/guid/9202a8c04000641f8000000000542e8b" title="Extracurricular activity" rel="wikipedia" href="http://en.wikipedia.org/wiki/Extracurricular_activity">extracurricular activities</a> and flexibility is good for.</p>
<h6 class="zemanta-related-title">Related articles by Zemanta</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://www.zemanta.com/blog/introducing-balloons-free-multimedia-overlays-for-bloggers/">Introducing Balloons: Free multimedia overlays for bloggers</a> (zemanta.com)</li>
<li class="zemanta-article-ul-li"><a href="http://www.avc.com/a_vc/2009/07/new-zemanta-release.html">New Zemanta Release</a> (avc.com)</li>
<li class="zemanta-article-ul-li"><a href="http://myventurepad.com/MVP/70563">Making The Web Smarter</a> (myventurepad.com)</li>
</ul>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/66543189-d8ad-44c4-9d90-613bf2e03a1b/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=66543189-d8ad-44c4-9d90-613bf2e03a1b" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related more-info pretty-attribution paragraph-reblog"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>

<p><a href="http://feedads.g.doubleclick.net/~a/o8KwYjuRmURwLZPw1psYp_GdGRc/0/da"><img src="http://feedads.g.doubleclick.net/~a/o8KwYjuRmURwLZPw1psYp_GdGRc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/o8KwYjuRmURwLZPw1psYp_GdGRc/1/da"><img src="http://feedads.g.doubleclick.net/~a/o8KwYjuRmURwLZPw1psYp_GdGRc/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/outbreak?a=2BsY5GZd23M:kDUAo7qTW_A:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/outbreak?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=2BsY5GZd23M:kDUAo7qTW_A:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/outbreak?i=2BsY5GZd23M:kDUAo7qTW_A:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=2BsY5GZd23M:kDUAo7qTW_A:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/outbreak?i=2BsY5GZd23M:kDUAo7qTW_A:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://friedcell.net/outbreak/2009/08/14/hiring-developers-king-of-the-hill-effect/feed/</wfw:commentRss>
		<feedburner:origLink>http://friedcell.net/outbreak/2009/08/14/hiring-developers-king-of-the-hill-effect/</feedburner:origLink></item>
		<item>
		<title>Know a JavaScript developer?</title>
		<link>http://feedproxy.google.com/~r/outbreak/~3/9eN1Ggf9L_I/</link>
		<comments>http://friedcell.net/outbreak/2009/07/21/know-a-javascript-developer/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 09:54:08 +0000</pubDate>
		<dc:creator>fry</dc:creator>
		
		<category><![CDATA[ajax]]></category>

		<category><![CDATA[browsers]]></category>

		<category><![CDATA[companies]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[software]]></category>

		<category><![CDATA[standards]]></category>

		<category><![CDATA[technology]]></category>

		<category><![CDATA[zemanta]]></category>

		<guid isPermaLink="false">http://friedcellcollective.net/outbreak/?p=269</guid>
		<description>If you haven&amp;#8217;t heard yet, we&amp;#8217;re looking for a JavaScript developer at Zemanta. I think the ad says it all.

Are you the frontend developer we are looking for?
Zemanta is developing a platform for contextually enhancing content and your job would be to help us develop tools that make this easy and fun for writers and [...]</description>
			<content:encoded><![CDATA[<p>If you haven&#8217;t heard yet, we&#8217;re looking for a <a class="zem_slink freebase/guid/9202a8c04000641f8000000000015527" href="http://en.wikipedia.org/wiki/JavaScript" title="JavaScript" rel="wikipedia">JavaScript</a> developer at <a class="zem_slink" href="http://www.zemanta.com" title="Zemanta" rel="homepage">Zemanta</a>. I think <a href="http://www.zemanta.com/jobs">the ad</a> says it all.</p>
<blockquote>
<h3>Are you the frontend developer we are looking for?</h3>
<p>Zemanta is developing a <em>platform for contextually enhancing content</em> and your job would be to help us develop <strong>tools that make this easy and fun for writers and readers alike</strong>.</p>
<p>If you have an exceptional understanding of <em>Javascript</em> and the <em>internals of browsers</em>, thrive on challenges and love <em>learning new skills</em>, then we would love to talk to you. Knowing <em>Python</em> and <em>Django framework</em> is a plus, but not a prerequisite.</p>
<p style="margin: 2em 0pt 0pt; text-align: center;">&#8220;I have nothing to offer but blood, toil, tears and sweat.&#8221;</p>
<p style="margin: 0pt 0pt 2em; text-align: center; font-style: italic;">(Winston Churchill on life at a startup)</p>
<p>Well, not quite. <strong>Working in a startup means working in an ever-changing environment.</strong> We expect you to be flexible, do what needs to be done when needed, but offer flexibility in return. We care about good work and meeting deadlines. We don&#8217;t care where or when you do it, as long as you keep true to mutual agreements which include occasional meetings and we promise not to overburden you with work. <em>A self-reliant member of a team is how you see yourself.</em></p>
<p>Schools you might have attended are none of our concern. We care only about how good of a developer and person you are. We expect you to send us examples of your work or explain persuasively why we should hire you. Zemanta is an international company, so your application, as much of our communication, will have to be in English.</p>
<p style="margin: 2em 0pt;">Please send your application saved as an HTML or TXT document to <a style="font-weight: bold;" href="mailto:jobs@zemanta.com">jobs@zemanta.com</a>.</p>
<p style="margin: 2em 0pt;"><strong>Closing date for applications: 31.7.2009</strong></p>
</blockquote>
<p>In a time when practically all pages include some sort of JavaScript I am surprised that we don&#8217;t have more JavaScript developers popping up - this now surely is a full time job even in <a class="zem_slink freebase/guid/9202a8c04000641f800000000003651a" href="http://en.wikipedia.org/wiki/Slovenia" title="Slovenia" rel="wikipedia">Slovenia</a>. So you are one challenge yourself and send your job application and if you know one, send him our way&#8230;<br />
<h6 class="zemanta-related-title">Related articles by Zemanta</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://www.slideshare.net/sneeu/wtf-is-python">WTF is Python</a> (slideshare.net)</li>
</ul>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/83c4e6c7-89f7-4c49-a0f3-4e58767b548e/" title="Reblog this post [with Zemanta]"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=83c4e6c7-89f7-4c49-a0f3-4e58767b548e" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>

<p><a href="http://feedads.g.doubleclick.net/~a/m0bCFvT0p_N03bDRvuaW7xCLSns/0/da"><img src="http://feedads.g.doubleclick.net/~a/m0bCFvT0p_N03bDRvuaW7xCLSns/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/m0bCFvT0p_N03bDRvuaW7xCLSns/1/da"><img src="http://feedads.g.doubleclick.net/~a/m0bCFvT0p_N03bDRvuaW7xCLSns/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/outbreak?a=9eN1Ggf9L_I:3CIW-Sco0r0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/outbreak?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=9eN1Ggf9L_I:3CIW-Sco0r0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/outbreak?i=9eN1Ggf9L_I:3CIW-Sco0r0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=9eN1Ggf9L_I:3CIW-Sco0r0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/outbreak?i=9eN1Ggf9L_I:3CIW-Sco0r0:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://friedcell.net/outbreak/2009/07/21/know-a-javascript-developer/feed/</wfw:commentRss>
		<feedburner:origLink>http://friedcell.net/outbreak/2009/07/21/know-a-javascript-developer/</feedburner:origLink></item>
		<item>
		<title>Do we have SEO experts in Slovenia?</title>
		<link>http://feedproxy.google.com/~r/outbreak/~3/40cLYF0frOs/</link>
		<comments>http://friedcell.net/outbreak/2009/07/21/do-we-have-seo-experts-in-slovenia/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 09:22:35 +0000</pubDate>
		<dc:creator>fry</dc:creator>
		
		<category><![CDATA[standards]]></category>

		<category><![CDATA[technology]]></category>

		<category><![CDATA[thoughts]]></category>

		<guid isPermaLink="false">http://friedcellcollective.net/outbreak/?p=268</guid>
		<description>I am fascinated that finally somebody decided to show people that most of the local SEO experts are actually a bunch of asshats. I&amp;#8217;m not saying all of them are and some do actually give you sound advice (that you could get elsewhere for free). Most of them (assumption as I haven&amp;#8217;t heard of any [...]</description>
			<content:encoded><![CDATA[<p>I am fascinated that finally somebody decided to show people that most of the local <a class="zem_slink freebase/guid/9202a8c04000641f800000000014d95f" href="http://en.wikipedia.org/wiki/Search_engine_optimization" title="Search engine optimization" rel="wikipedia">SEO</a> experts are actually a bunch of asshats. I&#8217;m not saying all of them are and some do actually give you sound advice (<a href="http://web.zen.si/archives/2008/01/spletne-urice-68-mene-ima-pa-google-rad/" lang="sl">that you could get elsewhere for free</a>). Most of them (assumption as I haven&#8217;t heard of any yet) will not be able to actually help you be better at <a class="zem_slink freebase/guid/9202a8c04000641f800000000042acea" href="http://google.com" title="Google" rel="homepage">Google</a> beyond rewriting code and doing text optimization and similar.</p>
<p>That&#8217;s why I&#8217;m supporting <a href="http://www.had.si" lang="sl">had</a> in trying to become the best result for <a href="http://www.had.si/blog/2009/07/21/retorik-in-retorika-retoricni-zapis/" lang="sl">retorik</a> and <a href="http://www.had.si/blog/2009/07/21/retorik-in-retorika-retoricni-zapis/" lang="sl">retorika</a> on Google and save 590 EUR that people would otherwise pay to get to learn how to become the first result on <a class="zem_slink freebase/guid/9202a8c04000641f8000000005bd2afa" href="http://en.wikipedia.org/wiki/Web_search_engine" title="Web search engine" rel="wikipedia">search engines</a>.<br />
<h6 class="zemanta-related-title">Related articles by Zemanta</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://web-workathome.com/seo-myths-mess-free-report/">How SEO Myths can mess you up (Free Report)</a> (web-workathome.com)</li>
<li class="zemanta-article-ul-li"><a href="http://www.raketscience.com/make-your-blog-easy-to-find-thru-web-directories/">Make Your Blog Easy To Find Thru Web Directories</a> (raketscience.com)</li>
<li class="zemanta-article-ul-li"><a href="http://franklinbishop.net/track-your-seo-performance/">Track Your Seo Performance</a> (franklinbishop.net)</li>
<li class="zemanta-article-ul-li"><a href="http://r.zemanta.com/?u=http%3A//money.cnn.com/2009/07/20/smallbusiness/optimise_web_site_for_local_traffic.smb/index.htm&amp;a=6325058&amp;rid=ead2fbe7-3d27-45d2-9cb1-551ebfaffe1c&amp;e=507bd4290885f7c471a6f7b81ec9fd21">Luring local traffic to your Web site</a> (money.cnn.com)</li>
<li class="zemanta-article-ul-li"><a href="http://blog.unionstreetmedia.com/internet-marketing/utilizing-google-local-for-your-business/">Utilizing Google Local For Your Business</a> (unionstreetmedia.com)</li>
</ul>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/ead2fbe7-3d27-45d2-9cb1-551ebfaffe1c/" title="Reblog this post [with Zemanta]"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=ead2fbe7-3d27-45d2-9cb1-551ebfaffe1c" alt="Reblog this post [with Zemanta]"/></a><span class="zem-script more-related more-info pretty-attribution"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>

<p><a href="http://feedads.g.doubleclick.net/~a/A_4fw8W0zIxC_i7tKiY3QVwaYWA/0/da"><img src="http://feedads.g.doubleclick.net/~a/A_4fw8W0zIxC_i7tKiY3QVwaYWA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/A_4fw8W0zIxC_i7tKiY3QVwaYWA/1/da"><img src="http://feedads.g.doubleclick.net/~a/A_4fw8W0zIxC_i7tKiY3QVwaYWA/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/outbreak?a=40cLYF0frOs:xVIIDjxFKdE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/outbreak?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=40cLYF0frOs:xVIIDjxFKdE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/outbreak?i=40cLYF0frOs:xVIIDjxFKdE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=40cLYF0frOs:xVIIDjxFKdE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/outbreak?i=40cLYF0frOs:xVIIDjxFKdE:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://friedcell.net/outbreak/2009/07/21/do-we-have-seo-experts-in-slovenia/feed/</wfw:commentRss>
		<feedburner:origLink>http://friedcell.net/outbreak/2009/07/21/do-we-have-seo-experts-in-slovenia/</feedburner:origLink></item>
		<item>
		<title>Developing for Opera</title>
		<link>http://feedproxy.google.com/~r/outbreak/~3/TxYcCCzK5vw/</link>
		<comments>http://friedcell.net/outbreak/2009/07/16/developing-for-opera/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 16:50:16 +0000</pubDate>
		<dc:creator>fry</dc:creator>
		
		<category><![CDATA[browsers]]></category>

		<category><![CDATA[companies]]></category>

		<category><![CDATA[css]]></category>

		<category><![CDATA[html]]></category>

		<category><![CDATA[ie]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[opera]]></category>

		<category><![CDATA[software]]></category>

		<category><![CDATA[standards]]></category>

		<category><![CDATA[technology]]></category>

		<category><![CDATA[thoughts]]></category>

		<category><![CDATA[zemanta]]></category>

		<guid isPermaLink="false">http://friedcellcollective.net/outbreak/?p=267</guid>
		<description>I&amp;#8217;ve recently put a lot of time into Zemanta stuff working in Opera. There are a few things I&amp;#8217;ve noticed that really bother me as a developer when developing for Opera.
Image via Wikipedia


The easiest way to be sure you&amp;#8217;re getting a non cached file is to actually have it open in a tab and reload [...]</description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently put a lot of time into <a class="zem_slink" href="http://www.zemanta.com/blog" title="Zemanta" rel="blog">Zemanta</a> stuff working in <a class="zem_slink freebase/guid/9202a8c04000641f80000000001f1dd8" href="http://www.opera.com/" title="Opera (web browser)" rel="homepage">Opera</a>. There are a few things I&#8217;ve noticed that really bother me as a developer when developing for Opera.</p>
<div class="zemanta-img"><a href="http://en.wikipedia.org/wiki/Image:Opera_logo.png"><img src="http://upload.wikimedia.org/wikipedia/en/thumb/8/8f/Opera_logo.png/160px-Opera_logo.png" alt="Opera" /></a><span class="zemanta-img-attribution">Image via <a href="http://en.wikipedia.org/wiki/Image:Opera_logo.png">Wikipedia</a></span></div>
<ol>
<li>
<p>The easiest way to be sure you&#8217;re getting a non cached file is to actually have it open in a tab and reload that tab. Emptying the cache does not seems to work as I&#8217;ve found out while caught in an alert loop.<a href="#footnote-1-267" rel="footnote" id="footnote-1-267-link">[1]</a></p>
</li>
<li>
<p>I found the &#8220;don&#8217;t run scripts on this page anymore&#8221; checkbox in the alert box fascinating, but less so after I clicked it and couldn&#8217;t find a way to turn scripts back on for that specific page. Fortunately restarting the browser did the job.</p>
</li>
<li>
<p>We load a loader.js that in turn loads other <a class="zem_slink freebase/guid/9202a8c04000641f8000000000015527" href="http://en.wikipedia.org/wiki/JavaScript" title="JavaScript" rel="wikipedia">Javascript</a> and <a class="zem_slink freebase/guid/9202a8c04000641f800000000012e60f" href="http://en.wikipedia.org/wiki/Cascading_Style_Sheets" title="Cascading Style Sheets" rel="wikipedia">CSS</a> files. Unfortunately it seems I have to manually load these files in tabs in order to get them to work - even though I can see them in Dragonfly when I click them they seem to be blank. When I reload, the content appears. After that they work as expected. But even then I don&#8217;t see them loaded in the Network tab of Dragonfly.</p>
</li>
<li>
<p>Can&#8217;t get the CSS loaded from a script to work. I don&#8217;t have any ideas, they just don&#8217;t work. I don&#8217;t see them in Dragonfly network tab (but I don&#8217;t see Javascript files either and they work).</p>
</li>
<li>
<p>When using Dragonfly I cannot get out of the inspect DOm mode so I can&#8217;t use the site to do something while watching what is happening in the <a class="zem_slink freebase/guid/9202a8c04000641f80000000000134fe" href="http://en.wikipedia.org/wiki/Document_Object_Model" title="Document Object Model" rel="wikipedia">DOM</a> - what you must do is switch to a different tab, do your stuff and then switch back.</p>
</li>
<li>
<p>When you look at errors on a <a class="zem_slink freebase/guid/9202a8c04000641f80000000002d66b2" href="http://wordpress.org" title="WordPress" rel="homepage">Wordpress</a> page Opera spits out loads of &#8220;-&#8230; is an unknown property&#8221; - thanks very much but properties that start with a - are supposed to be unknown to most of the browsers as they are vendor specific. This means that finding the error you&#8217;re looking for is much more difficult than it should be.</p>
</li>
</ol>
<p>What I really hate the most when working with Opera is the lack of information about what is going on. They&#8217;ve added some really nice features in the recent releases but it is still quite far away from being a browser that people develop for. In this way it is sort of similar to IE but IE is a must and Opera isn&#8217;t&#8230;</p>
<p>If any of these are my mistakes I&#8217;d be glad if someone set me straight and taught me to use Opera as a developer. I bet others would too.</p>
<h6 class="zemanta-related-title">Related articles by Zemanta</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://www.lockergnome.com/theoracle/2009/06/03/opera-10-beta-arrives/">Opera 10 Beta Arrives</a> (lockergnome.com)</li>
<li class="zemanta-article-ul-li"><a href="http://www.webmonkey.com/blog/Faster__Sleeker_Opera_10_Is_Built_for_Better_Web_Apps">Faster, Sleeker Opera 10 Is Built for Better Web Apps</a> (webmonkey.com)</li>
</ul>
<ol class="footnotes">
<li id="footnote-1-267">When you have a loop that alerts something and you keep getting the alert - the only way of getting out is removing the alert from code, emptying cache and trying to hit reload between alerts. In Opera this does not seem to work as the only way to get the new file is to reload the file and you can&#8217;t do that between alerts. <a href="#footnote-1-267-link" rev="footnote">back</a></li>
</ol>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/41c1fff0-584c-4e49-b175-7f9ec1d1cb9c/" title="Reblog this post [with Zemanta]"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=41c1fff0-584c-4e49-b175-7f9ec1d1cb9c" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related more-info pretty-attribution"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>

<p><a href="http://feedads.g.doubleclick.net/~a/d5eCwp9sZiBk7P6O_oMPEglSwA4/0/da"><img src="http://feedads.g.doubleclick.net/~a/d5eCwp9sZiBk7P6O_oMPEglSwA4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/d5eCwp9sZiBk7P6O_oMPEglSwA4/1/da"><img src="http://feedads.g.doubleclick.net/~a/d5eCwp9sZiBk7P6O_oMPEglSwA4/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/outbreak?a=TxYcCCzK5vw:bRlBvLv11nk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/outbreak?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=TxYcCCzK5vw:bRlBvLv11nk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/outbreak?i=TxYcCCzK5vw:bRlBvLv11nk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=TxYcCCzK5vw:bRlBvLv11nk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/outbreak?i=TxYcCCzK5vw:bRlBvLv11nk:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://friedcell.net/outbreak/2009/07/16/developing-for-opera/feed/</wfw:commentRss>
		<feedburner:origLink>http://friedcell.net/outbreak/2009/07/16/developing-for-opera/</feedburner:origLink></item>
		<item>
		<title>On Jetpack</title>
		<link>http://feedproxy.google.com/~r/outbreak/~3/YJP--6HZkys/</link>
		<comments>http://friedcell.net/outbreak/2009/05/23/on-jetpack/#comments</comments>
		<pubDate>Fri, 22 May 2009 23:05:09 +0000</pubDate>
		<dc:creator>fry</dc:creator>
		
		<category><![CDATA[blurps]]></category>

		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://friedcellcollective.net/outbreak/?p=266</guid>
		<description>Image by gkanai via Flickr
MozillaLabs released Jetpack - a lightweight way of extending the browser. It&amp;#8217;s essentially an API that allows you to write extensions for Firefox with web technologies. You can check out the video here:

Mozilla Labs Jetpack - Intro &amp;#38; Tutorial from Aza Raskin on Vimeo.
While you&amp;#8217;re at it you should also read [...]</description>
			<content:encoded><![CDATA[<div class="zemanta-img"><a href="http://www.flickr.com/photos/35237090101@N01/3040492136"><img src="http://farm4.static.flickr.com/3022/3040492136_0ea5dc9bb3_m.jpg" alt="Aza Raskin of Mozilla" width="240" height="160" /></a><span class="zemanta-img-attribution">Image by <a href="http://www.flickr.com/photos/35237090101@N01/3040492136">gkanai</a> via Flickr</span></div>
<p><a href="https://www.mozillalabs.com/">MozillaLabs</a> released <a href="https://jetpack.mozillalabs.com/">Jetpack</a> - a lightweight way of extending the browser. It&#8217;s essentially an <a class="zem_slink" href="http://en.wikipedia.org/wiki/Application_programming_interface" title="Application programming interface" rel="wikipedia">API</a> that allows you to write extensions for Firefox with web technologies. You can check out the video here:</p>
<div><object width="400" height="290"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4752576&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=4752576&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="290"></embed></object></div>
<p><a href="http://vimeo.com/4752576">Mozilla Labs Jetpack - Intro &amp; Tutorial</a> from <a href="http://vimeo.com/user532161">Aza Raskin</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>While you&#8217;re at it you should also read the <a href="https://jetpack.mozillalabs.com/">guiding principles</a>.</p>
<p>What I want to do here is list what I want from a lightweight extending system (in no specific order):</p>
<ul>
<li>Only web technologies should be used in the development process (CHECK)</li>
<li>Installing as easy as <a class="zem_slink" href="http://en.wikipedia.org/wiki/Greasemonkey" title="Greasemonkey" rel="wikipedia">Greasemonkey</a> user scripts (CHECK)</li>
<li>Should take care that <a class="zem_slink" href="http://en.wikipedia.org/wiki/Add-on_%28Mozilla%29" title="Add-on (Mozilla)" rel="wikipedia">add-on</a> authors don&#8217;t need to update for every version (CHECK)</li>
<li>Provides local storage and cross-domain posting capabilities</li>
<li>Add-on updates are handled automatically</li>
<li>Central add-on repository with usage &amp; install statistics</li>
<li>Easy access to add-on options (think options button in add-ons list)</li>
<li>Possibility to use web pages as configuration interfaces for add-on settings</li>
</ul>
<p>My current way of <a href="https://addons.mozilla.org/firefox/addon/11276">creating Firefox add-ons</a> is to build Greasemonkey user scripts and compiling them to add-ons into a full <a class="zem_slink" href="http://en.wikipedia.org/wiki/XPInstall" title="XPInstall" rel="wikipedia">.xpi</a>. This provides a good framework to add other things that normal Greasemonkey scripts cannot do.</p>
<p>As I checked Jetpack I missed a lot of the things from the list - too many to be able to create a Jetpack version of <a href="http://friedcell.net/tweecious">Tweecious</a>. Since it&#8217;s still in 0.1 my hopes are still high.</p>
<h6 class="zemanta-related-title" style="font-size: 1em;">Related articles by Zemanta</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://news.cnet.com/8301-17939_109-10245934-2.html?part=rss&amp;subj=Webware"> Mozilla&#8217;s Jetpack to bring next generation add-ons </a> (news.cnet.com)</li>
<li class="zemanta-article-ul-li"><a href="http://www.techcrunch.com/2009/05/20/strap-in-mozillas-jetpack-may-be-the-next-step-in-browser-extensions/"> Strap In: Mozilla&#8217;s Jetpack May Be The Next Step In Browser Extensions </a> (techcrunch.com)</li>
<li class="zemanta-article-ul-li"><a href="http://labs.mozilla.com/2009/05/introducing-jetpack-call-for-participation/"> Introducing Jetpack, Call for Participation </a> (labs.mozilla.com)</li>
</ul>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/7204067d-5a71-4b99-bdc8-6f6d252783cc/" title="Reblog this post [with Zemanta]"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=7204067d-5a71-4b99-bdc8-6f6d252783cc" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>

<p><a href="http://feedads.g.doubleclick.net/~a/VKXMkKdUdDsVYyNBSkHB6_kQ1rM/0/da"><img src="http://feedads.g.doubleclick.net/~a/VKXMkKdUdDsVYyNBSkHB6_kQ1rM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/VKXMkKdUdDsVYyNBSkHB6_kQ1rM/1/da"><img src="http://feedads.g.doubleclick.net/~a/VKXMkKdUdDsVYyNBSkHB6_kQ1rM/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/outbreak?a=YJP--6HZkys:RganYbtg1DQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/outbreak?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=YJP--6HZkys:RganYbtg1DQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/outbreak?i=YJP--6HZkys:RganYbtg1DQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=YJP--6HZkys:RganYbtg1DQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/outbreak?i=YJP--6HZkys:RganYbtg1DQ:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://friedcell.net/outbreak/2009/05/23/on-jetpack/feed/</wfw:commentRss>
		<feedburner:origLink>http://friedcell.net/outbreak/2009/05/23/on-jetpack/</feedburner:origLink></item>
		<item>
		<title>Essential Firefox add-ons</title>
		<link>http://feedproxy.google.com/~r/outbreak/~3/jdKrgXJmPZA/</link>
		<comments>http://friedcell.net/outbreak/2009/04/07/essential-firefox-add-ons/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 21:12:19 +0000</pubDate>
		<dc:creator>fry</dc:creator>
		
		<category><![CDATA[browsers]]></category>

		<category><![CDATA[firefox]]></category>

		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://friedcellcollective.net/outbreak/?p=264</guid>
		<description>I&amp;#8217;ve recently had to install a Firefox on the new iMac which lead me to ponder what add-ons do you really need.
Image via CrunchBase
This is the list I compiled:
Infrastructure
These add-ons will enhance the capabilities of your browser. You might not need them right away, but it&amp;#8217;s smart to have them installed for when you need [...]</description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently had to install a <a class="zem_slink" title="Firefox" rel="homepage" href="http://www.mozilla.com/en-US/firefox/">Firefox</a> on the new <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2Fs%3Fie%3DUTF8%26x%3D0%26ref%255F%3Dnb%255Fss%255Fe%26y%3D0%26field-keywords%3Dimac%26url%3Dsearch-alias%253Delectronics&amp;tag=cachedgear-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=390957">iMac</a> which lead me to ponder what add-ons do you really need.</p>
<div class="zemanta-img zemanta-action-dragged"><a href="http://www.crunchbase.com/product/firefox"><img src="http://www.crunchbase.com/assets/images/resized/0001/3109/13109v1-max-450x450.png" alt="Image representing Firefox as depicted in Crun..."/></a><span class="zemanta-img-attribution">Image via <a href="http://www.crunchbase.com">CrunchBase</a></span></div>
<p>This is the list I compiled:</p>
<h4>Infrastructure</h4>
<p>These add-ons will enhance the capabilities of your browser. You might not need them right away, but it&#8217;s smart to have them installed for when you need them (and I&#8217;m sure you will).</p>
<ol>
<li><a href="http://gears.google.com/">Google Gears</a> allows you to use off-line <a class="zem_slink" title="Gmail" rel="homepage" href="http://gmail.com">Gmail</a> and makes a lot of web applications faster.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/748">Greasemonkey</a> lets you install user scripts that will make pages nicer, give them additional features and other kinky stuff.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/4106">Operator</a> will expose <a href="http://microformats.org">microformated</a> content so you can easily use it.</li>
</ol>
<h4>Developer</h4>
<p>If you&#8217;re the dedicated support guy for this specific installation (people will call you when things go wrong) you should install these now - they&#8217;ll help you fix stuff later.</p>
<ol>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/1843">Firebug</a> will let you inspect pages and see what&#8217;s wrong and why.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/249">Html Validator</a> validates the code on the page so it&#8217;s easier to spot why something looks weird on screen.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/60">Web developer</a> toolbar adds a lot of useful features for debugging pages to a handy toolbar.</li>
</ol>
<h4>Interface</h4>
<p>These are just a few I like that make the browsing experience a bit nicer.</p>
<ol>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/5579">Cooliris</a> makes searching for images a lot friendlier.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/8879">FoxTab</a> helps when you have lots of tabs open. Unfortunately it isn&#8217;t supported on <a class="zem_slink" title="Mac OS X" rel="homepage" href="http://www.apple.com/macosx/">Mac OS X</a> 10.5.6 yet</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/9251">Inquisitor</a> is a nice search add-on that will enhance the search box.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/1951">Fission</a> moves the progress bar into the address bar (<a class="zem_slink" title="Safari (web browser)" rel="homepage" href="http://www.apple.com/safari/">Safari</a> style).</li>
</ol>
<h4>Sharing</h4>
<p>To make your social networking and blogging a bit easier.</p>
<ol>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/3615">Delicious</a> is a great add-on if you use their social bookmarking service.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/3945">Fotofox</a> lets you upload photos to a bunch of photo sites easily.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/7571">Zemanta</a> integrates with your blogging platform and recommends images, videos, links, articles and tags.</li>
<li><strong>(Shameless plug)</strong> <a href="https://addons.mozilla.org/en-US/firefox/addon/11276">Tweecious</a> is great for people who use <a class="zem_slink" title="Twitter" rel="homepage" href="http://twitter.com">Twitter</a> and Delicious - it takes twittered links and posts them to Delicious.</li>
</ol>
<p>You might also want to <a href="https://addons.mozilla.org/en-US/firefox/browse/type:3">install dictionaries</a> for the languages you use when writing in Firefox. You can get some more ideas at <a href="https://addons.mozilla.org/en-US/firefox/fashionyourfirefox">Fashion your Firefox</a>.<img style="border: medium none  ! important; margin: 0px ! important;" src="https://www.assoc-amazon.com/e/ir?t=cachedgear-20&amp;l=ur2&amp;o=1" alt="" height="1" width="1"/></p>
<div style="margin-top: 10px; height: 15px;" class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/7b3bee25-d32f-4504-95af-756915ece25c/" title="Reblog this post [with Zemanta]"><img style="border: medium none ; float: right;" class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=7b3bee25-d32f-4504-95af-756915ece25c" alt="Reblog this post [with Zemanta]"/></a><span class="zem-script more-related more-info pretty-attribution"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>

<p><a href="http://feedads.g.doubleclick.net/~a/Twf0cYTDYcGZ3crBNiycyNRqqCw/0/da"><img src="http://feedads.g.doubleclick.net/~a/Twf0cYTDYcGZ3crBNiycyNRqqCw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Twf0cYTDYcGZ3crBNiycyNRqqCw/1/da"><img src="http://feedads.g.doubleclick.net/~a/Twf0cYTDYcGZ3crBNiycyNRqqCw/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/outbreak?a=jdKrgXJmPZA:ZyR8xaEvvLA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/outbreak?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=jdKrgXJmPZA:ZyR8xaEvvLA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/outbreak?i=jdKrgXJmPZA:ZyR8xaEvvLA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=jdKrgXJmPZA:ZyR8xaEvvLA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/outbreak?i=jdKrgXJmPZA:ZyR8xaEvvLA:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://friedcell.net/outbreak/2009/04/07/essential-firefox-add-ons/feed/</wfw:commentRss>
		<feedburner:origLink>http://friedcell.net/outbreak/2009/04/07/essential-firefox-add-ons/</feedburner:origLink></item>
		<item>
		<title>Recent developments</title>
		<link>http://feedproxy.google.com/~r/outbreak/~3/2uf0V8txLPU/</link>
		<comments>http://friedcell.net/outbreak/2009/03/10/recent-developments/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 17:59:21 +0000</pubDate>
		<dc:creator>fry</dc:creator>
		
		<category><![CDATA[blurps]]></category>

		<guid isPermaLink="false">http://friedcellcollective.net/outbreak/?p=263</guid>
		<description>A few news about some recent projects I&amp;#8217;ve been working on:


Image by codepo8 via Flickr
Guardian topic researcher is a API launch demo we at Zemanta did with The Guardian. It&amp;#8217;s a simple mash-up that uses Guardian&amp;#8217;s search API to get articles about a selected topic and then Zemifies them with the Zemanta API to get [...]</description>
			<content:encoded><![CDATA[<p>A few news about some recent projects I&#8217;ve been working on:</p>
<ol>
<li>
<div class="zemanta-img zemanta-action-dragged"><a href="http://www.flickr.com/photos/11414938@N00/3344289044"><img src="http://farm4.static.flickr.com/3541/3344289044_08f332ec30_m.jpg" alt="The Guardian Open Platform launch" /></a><span class="zemanta-img-attribution">Image by <a href="http://www.flickr.com/photos/11414938@N00/3344289044">codepo8</a> via Flickr</span></div>
<p><a href="http://labs.zemanta.com/guardian">Guardian topic researcher</a> is a <a class="zem_slink" title="Application programming interface" rel="wikipedia" href="http://en.wikipedia.org/wiki/Application_programming_interface">API</a> launch demo we at <a class="zem_slink" title="Zemanta" rel="homepage" href="http://www.zemanta.com">Zemanta</a> did with <a class="zem_slink" title="The Guardian" rel="homepage" href="http://www.guardian.co.uk/">The Guardian</a>. It&#8217;s a simple mash-up that uses Guardian&#8217;s search API to get articles about a selected topic and then Zemifies them with the Zemanta API to get links to related concepts, be it people, places, bands, technologies&#8230; It&#8217;s buit using only <a class="zem_slink" title="JQuery" rel="homepage" href="http://jquery.com/">jQuery</a> (with the exception of a server-side proxy so the requests to <a href="http://developer.zemanta.com">Zemanta API</a> are a bit faster) and jQuery <a class="zem_slink" title="User interface" rel="wikipedia" href="http://en.wikipedia.org/wiki/User_interface">UI</a>. If you check it out you&#8217;ll see that we did a few things that one would normally not do on a regular web page - we did that here as an experiment in <a class="zem_slink" title="Usability" rel="wikipedia" href="http://en.wikipedia.org/wiki/Usability">usability</a> and browser speed.</p>
</li>
<li>
<p>I found a really annoying bug in my <a href="http://friedcellcollective.net/outbreak/jsjquerywindowname/">jQuery.windowName plug-in</a> for jQuery due to a feature in jQueries param function that serialises <a class="zem_slink" title="JavaScript" rel="wikipedia" href="http://en.wikipedia.org/wiki/JavaScript">JavaScript</a> objects into a query string. It replaces %20 (space) with a + (plus) which broke the form creation. Don&#8217;t know how I didn&#8217;t get this sooner but it&#8217;s fixed now. I also fixed a bug with breaking IE when data object has fields with name method, target or action.</p>
</li>
<li>
<p>Tweecious is a small mash-up I&#8217;ve written in my first montly hack day. It&#8217;s an application that goes through your twitter feed, finds any links you posted and posts them to <a href="http://delicious.com">delicious</a>. In between it does some less interesting but important stuff like expanding the link via <a href="http://longurl.org">longurl.org</a> and tagging the content of the page via Zemanta API. Everything is done inside the browser so the app doesn&#8217;t need any credentials - if you&#8217;re logged into delicious it can post, if you&#8217;re not it will let you know. Expect a release soon - probably this week.</p>
</li>
<li>
<p>I decided to have monthly hack days. I will create small apps or just little snippets of JavaScript code that seem like a good idea at the time. The first one produced Tweecious which was actually a challenge from <a href="http://brian.kingsonline.net/talk">Brian King</a> at <a href="http://briks.si">Briks</a>. I&#8217;m looking for ideas for the next one - it might be a generic bookmarks exporter.</p>
</li>
</ol>
<h6 class="zemanta-related-title">Related articles by Zemanta</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://www.paulspoerry.com/2009/03/09/jquery-ui-17-released-new-css-framework-dramatic-updates-to-controls/">jQuery UI 1.7 Released: New CSS Framework &amp; Dramatic Updates to Controls</a> (paulspoerry.com)</li>
<li class="zemanta-article-ul-li"><a href="http://ajaxian.com/archives/jsos-jquery-based-desktop">JSOS: jQuery based desktop</a> (ajaxian.com)</li>
</ul>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/9c248921-9d8b-4d7d-b76b-6727ec88e3ab/" title="Zemified by Zemanta"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=9c248921-9d8b-4d7d-b76b-6727ec88e3ab" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>

<p><a href="http://feedads.g.doubleclick.net/~a/9AJhKXGDxwYe5F9pW08Fhnd1HAc/0/da"><img src="http://feedads.g.doubleclick.net/~a/9AJhKXGDxwYe5F9pW08Fhnd1HAc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/9AJhKXGDxwYe5F9pW08Fhnd1HAc/1/da"><img src="http://feedads.g.doubleclick.net/~a/9AJhKXGDxwYe5F9pW08Fhnd1HAc/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/outbreak?a=2uf0V8txLPU:VY2VveD4XyE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/outbreak?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=2uf0V8txLPU:VY2VveD4XyE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/outbreak?i=2uf0V8txLPU:VY2VveD4XyE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=2uf0V8txLPU:VY2VveD4XyE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/outbreak?i=2uf0V8txLPU:VY2VveD4XyE:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://friedcell.net/outbreak/2009/03/10/recent-developments/feed/</wfw:commentRss>
		<feedburner:origLink>http://friedcell.net/outbreak/2009/03/10/recent-developments/</feedburner:origLink></item>
		<item>
		<title>Speaking about the web of data</title>
		<link>http://feedproxy.google.com/~r/outbreak/~3/7_mo2ZCmxWs/</link>
		<comments>http://friedcell.net/outbreak/2009/02/25/speaking-about-the-web-of-data/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 01:26:32 +0000</pubDate>
		<dc:creator>fry</dc:creator>
		
		<category><![CDATA[ajax]]></category>

		<category><![CDATA[browsers]]></category>

		<category><![CDATA[companies]]></category>

		<category><![CDATA[css]]></category>

		<category><![CDATA[design]]></category>

		<category><![CDATA[events]]></category>

		<category><![CDATA[firefox]]></category>

		<category><![CDATA[frameworks]]></category>

		<category><![CDATA[ie]]></category>

		<category><![CDATA[interface]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[microformats]]></category>

		<category><![CDATA[openid]]></category>

		<category><![CDATA[opera]]></category>

		<category><![CDATA[posh]]></category>

		<category><![CDATA[safari]]></category>

		<category><![CDATA[software]]></category>

		<category><![CDATA[spletne urice]]></category>

		<category><![CDATA[standards]]></category>

		<category><![CDATA[technology]]></category>

		<category><![CDATA[zemanta]]></category>

		<guid isPermaLink="false">http://friedcellcollective.net/outbreak/?p=261</guid>
		<description>Today at 19:00 CET I&amp;#8217;ll be speaking at a local web meet-up about the web of data. There&amp;#8217;ll be a live feed of the talk available and since I&amp;#8217;ll be speaking in English you can tune it. This is a quick translation of the abstract posted on Slovenian sites:
Numerous services are emerging on the web [...]</description>
			<content:encoded><![CDATA[<p>Today at 19:00 CET I&#8217;ll be speaking at a <a href="http://web.zen.si">local web meet-up</a> about the web of data. There&#8217;ll be a <a href="http://video.kiberpipa.org/live.html">live feed of the talk</a> available and since I&#8217;ll be speaking in English you can tune it. This is a quick translation of the abstract posted on Slovenian sites:</p>
<blockquote><p>Numerous services are emerging on the web that provide data in a computer friendly form through <a class="zem_slink" title="Application programming interface" rel="wikipedia" href="http://en.wikipedia.org/wiki/Application_programming_interface">APIs</a>, <a class="zem_slink" title="Microformat" rel="wikipedia" href="http://en.wikipedia.org/wiki/Microformat">microformats</a>, feeds,&#8230; Even your blog is actually a database as it syndicates its content via feeds and new posts trigger a ping you can subscribe to.</p>
<p>This fact opens new ways of collaboration - so called <a class="zem_slink" title="Mashup (music)" rel="wikipedia" href="http://en.wikipedia.org/wiki/Mashup_%28music%29">mash-ups</a>, but this isn&#8217;t really a new concept. What&#8217;s new about it is the fact that we don&#8217;t use this word anymore as all the new services are some sort of a mash-up leveraging existing services. But accessing data is not the only way to leveraging these services - it&#8217;s becoming increasingly easy to create an application that lives in other applications without their approval through browser extensions and <a class="zem_slink" title="Bookmarklet" rel="wikipedia" href="http://en.wikipedia.org/wiki/Bookmarklet">bookmarklets</a>.</p>
<p>Marko Mrdjenovič from <a class="zem_slink" title="Zemanta" rel="homepage" href="http://www.zemanta.com">Zemanta</a> will talk about what you can do to make your site more mash-up friendly and why that&#8217;s becoming increasingly important. As a developer I&#8217;ll also present what options you have and give a few tips on what to do and what to avoid when developing these kind of apps.</p></blockquote>
<p>If you have any questions during the talk <a href="http://twitter.com/home?status=@friedcell+#wwwh">use twitter to tell me</a> and I&#8217;ll try to answer them. Or put them in the <a href="http://friedcellcollective.net/outbreak/2009/02/25/speaking-about-the-web-of-data/#express">comments</a>.</p>
<p><ins>Update:</ins> The <a href="http://video.kiberpipa.org/media/SU_Marko_Mrdjenovic_Je_vase_spletno_mesto_podatkovna_baza/play.html">video is now online</a>. It&#8217;s in English so go watch it and tell me what you think.</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Zemified by Zemanta" href="http://reblog.zemanta.com/zemified/a8d576e4-f0a2-4415-8f0c-fccd712a530e/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=a8d576e4-f0a2-4415-8f0c-fccd712a530e" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>

<p><a href="http://feedads.g.doubleclick.net/~a/GQ9_St9OKehJwUjUadtJnlDEbs8/0/da"><img src="http://feedads.g.doubleclick.net/~a/GQ9_St9OKehJwUjUadtJnlDEbs8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/GQ9_St9OKehJwUjUadtJnlDEbs8/1/da"><img src="http://feedads.g.doubleclick.net/~a/GQ9_St9OKehJwUjUadtJnlDEbs8/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/outbreak?a=7_mo2ZCmxWs:wQft05KGSxk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/outbreak?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=7_mo2ZCmxWs:wQft05KGSxk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/outbreak?i=7_mo2ZCmxWs:wQft05KGSxk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=7_mo2ZCmxWs:wQft05KGSxk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/outbreak?i=7_mo2ZCmxWs:wQft05KGSxk:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://friedcell.net/outbreak/2009/02/25/speaking-about-the-web-of-data/feed/</wfw:commentRss>
		<feedburner:origLink>http://friedcell.net/outbreak/2009/02/25/speaking-about-the-web-of-data/</feedburner:origLink></item>
		<item>
		<title>Don’t make an ASS of U and ME</title>
		<link>http://feedproxy.google.com/~r/outbreak/~3/ev_eKA_VkJ4/</link>
		<comments>http://friedcell.net/outbreak/2009/02/20/dont-make-an-ass-of-u-and-me/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 16:08:24 +0000</pubDate>
		<dc:creator>fry</dc:creator>
		
		<category><![CDATA[browsers]]></category>

		<category><![CDATA[companies]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[opera]]></category>

		<category><![CDATA[software]]></category>

		<category><![CDATA[technology]]></category>

		<category><![CDATA[zemanta]]></category>

		<guid isPermaLink="false">http://friedcellcollective.net/outbreak/?p=260</guid>
		<description>What&amp;#8217;s wrong with the following line of code (from WordPress 2.6.5, common.js)?
jQuery(function(){jQuery('#media-buttons a').tTips();});
What guarantees do you have that by the time the internal function executes the global jQuery will still be the one you expect it to be or that it will have the tTips plug-in you attached a few lines earlier? Nothing. You just [...]</description>
			<content:encoded><![CDATA[<p>What&#8217;s wrong with the following line of code (from WordPress 2.6.5, common.js)?</p>
<pre><code>jQuery(function(){jQuery('#media-buttons a').tTips();});</code></pre>
<p>What guarantees do you have that by the time the internal function executes the global jQuery will still be the one you expect it to be or that it will have the tTips plug-in you attached a few lines earlier? <em>Nothing</em>. You just <strong>ASSUME</strong> it will be. You didn&#8217;t put it there, so you can be sure that nobody will. Right.</p>
<p>jQuery developers knew this might be a problem so jQuery will pass a reference to the itself as an argument when triggering this event:</p>
<pre><code>jQuery(function($){$('#media-buttons a').tTips();});</code></pre>
<p>This would work and wouldn&#8217;t break. And it would make your platform a bit more hackable.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/ihYgVS1G9oSOvmHkeBGKHaIKDNY/0/da"><img src="http://feedads.g.doubleclick.net/~a/ihYgVS1G9oSOvmHkeBGKHaIKDNY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ihYgVS1G9oSOvmHkeBGKHaIKDNY/1/da"><img src="http://feedads.g.doubleclick.net/~a/ihYgVS1G9oSOvmHkeBGKHaIKDNY/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/outbreak?a=ev_eKA_VkJ4:wNb9V1e7F9Y:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/outbreak?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=ev_eKA_VkJ4:wNb9V1e7F9Y:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/outbreak?i=ev_eKA_VkJ4:wNb9V1e7F9Y:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=ev_eKA_VkJ4:wNb9V1e7F9Y:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/outbreak?i=ev_eKA_VkJ4:wNb9V1e7F9Y:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://friedcell.net/outbreak/2009/02/20/dont-make-an-ass-of-u-and-me/feed/</wfw:commentRss>
		<feedburner:origLink>http://friedcell.net/outbreak/2009/02/20/dont-make-an-ass-of-u-and-me/</feedburner:origLink></item>
		<item>
		<title>jQuery.readyOrDone</title>
		<link>http://feedproxy.google.com/~r/outbreak/~3/SMitBZlaPrc/</link>
		<comments>http://friedcell.net/outbreak/2009/02/19/jqueryreadyordone/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 15:39:41 +0000</pubDate>
		<dc:creator>fry</dc:creator>
		
		<category><![CDATA[browsers]]></category>

		<category><![CDATA[companies]]></category>

		<category><![CDATA[firefox]]></category>

		<category><![CDATA[frameworks]]></category>

		<category><![CDATA[ie]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[opera]]></category>

		<category><![CDATA[safari]]></category>

		<category><![CDATA[software]]></category>

		<category><![CDATA[technology]]></category>

		<category><![CDATA[zemanta]]></category>

		<guid isPermaLink="false">http://friedcellcollective.net/outbreak/?p=259</guid>
		<description>There&amp;#8217;s a really small probability that someone might need something like this but I did and I&amp;#8217;d like to share it.
At Zemanta we have a few different ways of loading our scripts and we cannot always control when they do. The Firefox extension will load the scripts on DOM ready, WordPress plugin will load them [...]</description>
			<content:encoded><![CDATA[<p>There&#8217;s a really small probability that someone might need something like this but I did and I&#8217;d like to share it.</p>
<p>At <a class="zem_slink" title="Zemanta" rel="homepage" href="http://www.zemanta.com">Zemanta</a> we have a few different ways of loading our scripts and we cannot always control when they do. The <a class="zem_slink" title="Firefox" rel="homepage" href="http://www.mozilla.com/en-US/firefox/">Firefox</a> extension will load the scripts on DOM ready, <a class="zem_slink" title="WordPress" rel="homepage" href="http://wordpress.org">WordPress</a> plugin will load them somewhere in the middle of the HTML, <a class="zem_slink" title="Drupal" rel="homepage" href="http://drupal.org">Drupal</a> and <a class="zem_slink" title="Movable Type" rel="homepage" href="http://www.movabletype.com/">MovableType</a> plugins will load them in the head and IE extension will load them sometime while loading the page.</p>
<p>This all means that we have to delay some of our code execution to when <a class="zem_slink" title="Document Object Model" rel="wikipedia" href="http://en.wikipedia.org/wiki/Document_Object_Model">DOM</a> is ready and scripts are loaded. Which is where the problem kicks in.</p>
<p><a class="zem_slink" title="JQuery" rel="homepage" href="http://jquery.com/">jQuery</a> has this nice way of doing this with <code>$(document).ready(fn)</code> or short <code>$(fn)</code> which waits until the document is ready and executes the passed <code>fn</code> function. If the document is ready it will <strong>execute the function immediately</strong>. Our issue lies in what &#8220;document is ready&#8221; means to jQuery - <em>it means different thing in different browsers</em>.</p>
<p>In browsers that support DOMContentLoaded (Firefox, <a class="zem_slink" title="WebKit" rel="homepage" href="http://webkit.org/">Webkit</a>, Opera - let&#8217;s call them modern browsers) &#8220;document is ready&#8221; means that either <code>DOMContentLoaded</code> event fired on the document or the <code>load</code> event fired on its window. On IE &#8220;document is ready&#8221; means that either <code>onreadystatechange</code> fired with <code>readyState === 'complete'</code> on the document or <code>document.documentElement.doScroll("left")</code> is successful (<a href="http://javascript.nwbox.com/IEContentLoaded/">Diego Perini hack</a>). To make this short - if you <em>load jQuery after all the events fired</em> in modern browsers <strong>jQuery will never know</strong> that the document is ready.</p>
<p>To get around this (we really don&#8217;t like having our own hacked version of jQuery) I wrote this little plugin:</p>
<pre><code>(function ($) {
$.readyOrDone = function (fn) {
	var s = document.readyState;
	if (s === 'complete') {
		$.ready();
	}
	$(fn);
};
})(jQuery);</code></pre>
<p>As you can see this will check if document is in a &#8220;complete&#8221; state and fire the <code>ready</code> method on jQuery which usually fires when DOM is ready - if it fired before it will do nothing. It will then add the function to the ready queue which also has this nice feature of firing immediately if DOM is ready.</p>
<p>All you have to do is change your <code>$(fn)</code> calls to <code>$.readyOrDone(fn)</code> and you have a bulletproof solution for executing functions when DOM is ready even if jQuery was late to the party and has no idea if the document is really ready.</p>
<p><ins>Update:</ins> <a href="http://dev.jquery.com/ticket/4196">Filed a bug</a> and hoping for the best.</p>
<p><ins>Update 2:</ins> I found out that not all browsers provide the readyState property - Firefox on Ubuntu for example. Devised a new version that tries to smartly handle such cases:</p>
<pre><code>(function ($) {
	var time = setTimeout(function () {}, 0),
		lastelm = null;
	$.readyOrDone = function (fn) {
		var s = document.readyState, getLast = function () {
			var elms = document.getElementsByTagName('*');
			return elms[elms.length - 1];
		};
		if (s === &#8216;complete&#8217;) {
			$.ready();
		} else if (typeof s === &#8216;undefined&#8217;) {
			lastelm = getLast();
			clearTimeout(time);
			time = setTimeout(function () {
				if (getLast() === lastelm &amp;&amp; typeof document.readyState === &#8216;undefined&#8217;) {
					 $.ready();
				}
			}, 1000);
		}
		$(fn);
	};
})($);</code></pre>
<h6 class="zemanta-related-title">Related articles by Zemanta</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://read2know.com/wordpress/plugins/enhance-your-emails-and-blog-posts-with-zemanta/">Enhance your emails and blog posts with Zemanta</a> (read2know.com)</li>
<li class="zemanta-article-ul-li"><a href="http://webbugnet.wordpress.com/2009/01/21/zemanta-making-blogging-easier/">Zemanta: Making Blogging Easier</a> (webbugnet.wordpress.com)</li>
</ul>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/70c1647e-7fc8-46ae-a323-fa2f71eaf793/" title="Zemified by Zemanta"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_c.png?x-id=70c1647e-7fc8-46ae-a323-fa2f71eaf793" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>

<p><a href="http://feedads.g.doubleclick.net/~a/m8dSW7ygCx6JwqZrj4-rPJwCkUs/0/da"><img src="http://feedads.g.doubleclick.net/~a/m8dSW7ygCx6JwqZrj4-rPJwCkUs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/m8dSW7ygCx6JwqZrj4-rPJwCkUs/1/da"><img src="http://feedads.g.doubleclick.net/~a/m8dSW7ygCx6JwqZrj4-rPJwCkUs/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/outbreak?a=SMitBZlaPrc:AL5XoQSwF8s:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/outbreak?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=SMitBZlaPrc:AL5XoQSwF8s:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/outbreak?i=SMitBZlaPrc:AL5XoQSwF8s:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=SMitBZlaPrc:AL5XoQSwF8s:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/outbreak?i=SMitBZlaPrc:AL5XoQSwF8s:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://friedcell.net/outbreak/2009/02/19/jqueryreadyordone/feed/</wfw:commentRss>
		<feedburner:origLink>http://friedcell.net/outbreak/2009/02/19/jqueryreadyordone/</feedburner:origLink></item>
		<item>
		<title>Getting into the graph</title>
		<link>http://feedproxy.google.com/~r/outbreak/~3/riEcpkS_Uh8/</link>
		<comments>http://friedcell.net/outbreak/2009/01/11/getting-into-the-graph/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 14:44:31 +0000</pubDate>
		<dc:creator>fry</dc:creator>
		
		<category><![CDATA[ajax]]></category>

		<category><![CDATA[companies]]></category>

		<category><![CDATA[design]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[interface]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[software]]></category>

		<category><![CDATA[technology]]></category>

		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://friedcellcollective.net/outbreak/?p=248</guid>
		<description>Designing forms online is a hard job. What you need to do is find the right balance between the consumer experience which is generally worse as the number of fields grows and the amount of content you or your employers want to get from the user in a single form. With this you&amp;#8217;re defining the [...]</description>
			<content:encoded><![CDATA[<p>Designing forms online is a hard job. What you need to do is find the right <em>balance</em> between the <em>consumer experience</em> which is generally worse as the number of fields grows and the <em>amount of content</em> you or your employers want to get from the user in a single form. With this you&#8217;re defining the conversion rate of a form - less fields will, <a href="http://en.wikipedia.org/wiki/Ceteris_paribus">ceteris paribus</a>, give you a higher conversion rate - which means that you should strive to have less fields in a form (although recently I saw an argument on <a class="zem_slink" title="Twitter" rel="homepage" href="http://www.twitter.com/">twitter</a> that you want for people to put some effort into forms to avoid registration from people who will never use your service<a rel="footnote" href="#footnote-1-248" id="footnote-1-248-link">1</a>). Having many fields in a form has two major effects - <em>users cannot easily scan</em> the form to see if they&#8217;re actually willing to give away all the information that you want and they don&#8217;t want the form to <em>take a lot of time</em>. Since you sometimes can&#8217;t lower the number of required fields you can try to lesser the pain of filling them - by <strong>auto pre-filling them</strong>.</p>
<p>This is especially true of contact/feedback and registration forms. On contact forms the only thing consumers want to give is the message, on the other hand what you want is at least a name and a way to contact them (the others in your company might want more, but <a href="http://friedcellcollective.net/outbreak/2007/12/13/messing-up-the-interface/">that&#8217;s a different <del>story</del><ins>post</ins></a>). The registration form is somewhat similar in the way that you can make it really simple by just using email and password fields but then again it&#8217;s nice if you have a way of addressing your users other than an email address and if your application is at least a bit local you also want their location.</p>
<p>The other side of the story is obviously that consumers don&#8217;t want to fill the same forms all the time. As time passes they&#8217;re minds are saying &#8220;Not again&#8230;&#8221; which is not that far enough from &#8220;Why can&#8217;t they get it from some place I already use&#8221;.</p>
<h4>Into the graph</h4>
<p>There have been a lot of attempts at solving this issue of repetitive entering of same data. There&#8217;s a way to do it with <a class="zem_slink" title="OpenID" rel="wikipedia" href="http://en.wikipedia.org/wiki/OpenID">OpenID</a>, which unfortunately isn&#8217;t ready for mass use since not many people use it. Other possibilities are public APIs of numerous services that allow you to get at least some user information if you have some data about them.</p>
<p>One of these APIs is <a class="zem_slink" title="Flickr" rel="homepage" href="http://www.flickr.com">Flickr</a>&#8217;s as it allows access to user information if you have <em>the user&#8217;s email</em> through <a href="http://www.flickr.com/services/api/flickr.people.findByEmail.html">flickr.people.findByEmail</a> and then <a href="http://www.flickr.com/services/api/flickr.people.getInfo.html">flickr.people.getInfo</a> as is neatly demostrated by <a href="http://huffduffer.com">huffduffer</a> which uses it to retrieve your <a href="http://huffduffer.com/friedcell">Flickr avatar</a>.</p>
<p>What you have now is the user&#8217;s <em>name</em>, &#8220;preferred&#8221; <em>username</em>, <em>location</em> and <em>avatar</em> (which you might have had already if the user is registered with <a href="http://gravatar.com">gravatar</a>).</p>
<h4>The graph</h4>
<div class="zemanta-img"><a href="http://www.flickr.com/photos/11127460@N00/2105757707"><img src="http://farm3.static.flickr.com/2248/2105757707_99dec8729a_m.jpg" alt="Social Graph Platform Wars" width="240" height="175" /></a><br />
<span class="zemanta-img-attribution">Image by <a href="http://www.flickr.com/photos/11127460@N00/2105757707">davemc500hats</a> via Flickr</span></div>
<p>The other place where you can get decent information about the user is <a href="http://code.google.com/apis/socialgraph/">Google&#8217;s SocialGraph API</a>. With it you get lots of services from which you can get all kinds of public information about a user. The problem with this API is that you first need a <em>relevant entry point</em> which must be a URL that the user owns. This can be a Flickr user URL (that you have if you successfully completed the previous step) but these don&#8217;t always produce very good results.</p>
<p>What seems to produce better results are twitter URLs - the only problem <del>was</del><ins>is</ins> how to get one. An easy way to get the users twitter URL is demonstrated in a <a href="http://www.wait-till-i.com/2009/01/05/detecting-and-displaying-the-information-of-a-logged-in-twitter-user/">blog post by Chris Heilmann</a>. This will get you all the information you get from Flickr for all the users that are currently logged in to their twitter account. <ins>Seems that this is not possible anymore!</ins></p>
<p>If you&#8217;re still not getting anything you can still ask a user for a URL - be it their blog or any social network service account. Or you can let her log in using other services that will give you a good starting point, like <a href="http://developers.facebook.com/news.php?blog=1&amp;story=108">Facebook Connect</a> or <a href="http://openid.net">OpenID</a>.</p>
<h4>Data from the graph</h4>
<p>What SocialGraph gives you is a <strong>list of services</strong> the user is registered with. You can also get their <strong>list of friends</strong> - if any of them are also users of your service you can suggest they also connect on your service. You might also get to know whether they <em>use OpenID</em> and suggest them that they use that login to log into your service too. Or you might be able to figure out what their blogs are - especially when they&#8217;re claimed on <a href="http://technorati.com">Technorati</a>.</p>
<p>This information can also help you get in touch with your users as you can automatically contact them on services where you also have an account, like <a href="http://facebook.com">Facebook</a>, <a href="http://twitter.com">twitter</a>, <a href="http://friendfeed.com">friendfeed</a> and others.</p>
<p>The thing is that once you have all this information you should be able to get all the public information the user has exposed on any of these services. And you can use this information to help the user by pre-filling forms or use it in other ways that a user might find <strong>helpful, but not spooky</strong>.</p>
<p>What you shouldn&#8217;t do is use this information in ways that <em>might scare the user</em>. For example if you can get the birth date from any of the services, don&#8217;t hide the fact that you did - offer a form to fill the date and prefill it. This way the user won&#8217;t be spooked if you send them a happy birthday note or you greet them with a happy birthday note.</p>
<div><script type="text/javascript" src="http://friedcellcollective.net/js/AutoGraph/AutoGraph.js"></script><script type="text/javascript" src="http://friedcellcollective.net/js/AutoGraph/AutoGraph_userinfo.js"></script><noscript><ins>You need Javascript to see this demo - if you&#8217;re reading this a feed reader I suggest you <a href="http://friedcellcollective.net/outbreak/2009/01/11/getting-into-the-graph/">visit the post on my blog</a>.</ins></noscript></div>
<p>This form should get your Twitter data and then get some of your services via Google&#8217;s SocialGraph. It&#8217;s all nicely wrapped in an hCard.</p>
<ol class="footnotes">
<li id="footnote-1-248">Sorry I forgot your name as I&#8217;m not yet used to bookmarking twitter statuses. <a rev="footnote" href="#footnote-1-248-link">back</a></li>
</ol>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/7dd9c6e4-9b7b-49e6-8d50-b12fef745867/" title="Zemified by Zemanta"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_c.png?x-id=7dd9c6e4-9b7b-49e6-8d50-b12fef745867" alt="Reblog this post [with Zemanta]" /></a></div>

<p><a href="http://feedads.g.doubleclick.net/~a/_CdpNwpEzgFanwlNsorUZv_aeqc/0/da"><img src="http://feedads.g.doubleclick.net/~a/_CdpNwpEzgFanwlNsorUZv_aeqc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/_CdpNwpEzgFanwlNsorUZv_aeqc/1/da"><img src="http://feedads.g.doubleclick.net/~a/_CdpNwpEzgFanwlNsorUZv_aeqc/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/outbreak?a=riEcpkS_Uh8:-kW0ALksKZ8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/outbreak?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=riEcpkS_Uh8:-kW0ALksKZ8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/outbreak?i=riEcpkS_Uh8:-kW0ALksKZ8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=riEcpkS_Uh8:-kW0ALksKZ8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/outbreak?i=riEcpkS_Uh8:-kW0ALksKZ8:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://friedcell.net/outbreak/2009/01/11/getting-into-the-graph/feed/</wfw:commentRss>
		<feedburner:origLink>http://friedcell.net/outbreak/2009/01/11/getting-into-the-graph/</feedburner:origLink></item>
		<item>
		<title>Using jQuery for event handling on Objects</title>
		<link>http://feedproxy.google.com/~r/outbreak/~3/1JAFSNH_hVI/</link>
		<comments>http://friedcell.net/outbreak/2009/01/04/using-jquery-for-event-handling-on-objects/#comments</comments>
		<pubDate>Sun, 04 Jan 2009 20:59:16 +0000</pubDate>
		<dc:creator>fry</dc:creator>
		
		<category><![CDATA[frameworks]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://friedcellcollective.net/outbreak/?p=247</guid>
		<description>I&amp;#8217;m working on a few projects with jQuery that need event handling. Since I like the way event handling is done in jQuery, I decided to use it to add event handling to internal objects with jQuery (1.2.6 at the time of writing). This seems very easy:
internalObject = {/* code here */};
eventHandler = $(internalObject);
This means [...]</description>
			<content:encoded><![CDATA[<p>I&#8217;m working on a few projects with jQuery that need event handling. Since I like the way event handling is done in jQuery, I decided to use it to add event handling to internal objects with jQuery (1.2.6 at the time of writing). This seems very easy:</p>
<pre><code>internalObject = {/* code here */};
eventHandler = $(internalObject);</code></pre>
<p>This means that you could now do</p>
<pre class="inflow"><code>eventHandler.bind('customEvent', function (ev) {
	// this is a reference to internalObject
});</code></pre>
<p>and of course also </p>
<pre class="inflow"><code>eventHandler.trigger('customEvent', {some: 'data'});</code></pre>
<p>which is great.</p>
<p>But in a part of my code <strong>this just wouldn&#8217;t work</strong>. Unfortunately it was my first try at doing <code>jQuery({/* custom object */})</code> and since I obviously wasn&#8217;t at my best when writing it I was sure this couldn&#8217;t be done. So I hacked around it.</p>
<p>A few weeks ago I made me a test case and figured out <strong>it works when passed an empty object</strong> (<code>{}</code>). So I implemented it everywhere and sure enough a part of the code stopped working. Which made me delve into the code to figure out why - a bit of debugging made me think the bug was somewhere in jQuery and I found out that <em>there is a problem</em> with the <code>makeArray</code> function. When it&#8217;s trying to create an <code>Array</code> it will test if the object has a <code>length</code> property. But as the comment in uncompressed code neatly points out <em>//the window, strings and functions also have &#8216;length&#8217;</em> it checks a few things that allows it to handle these objects differently.</p>
<p>This means that</p>
<pre class="inflow"><code>eventHandler = $({});</code></pre>
<p>will work normally, while</p>
<pre class="inflow"><code>eventHandler = $({length:0});</code></pre>
<p>won&#8217;t because eventHandler length will be 0.</p>
<p>My problem was that the object I was passing had a <code>length</code> property. As such it got sucked into the else that processes arrays and other array like objects (like <a href="https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Functions_and_function_scope/arguments">arguments</a> and most probably also <a href="https://developer.mozilla.org/en/Gecko_DOM_Reference/Introduction#Important_Data_Types">NodeLists</a>). This meant that what I got back was nothing since length was initially set at 0.</p>
<p><strong>Important update:</strong> Don&#8217;t do this:</p>
<pre class="inflow"><code>eventHandler = {};
internalObject = {
	customEvent: function () {
		eventHandler.trigger('customEvent');
		/* some other handling code */
	},
	/* more code */
};
eventHandler = $(internalObject);
eventHandler.bind('customEvent', function (ev) {
	// this is a reference to internalObject
});
internalObject.customEvent();
</code></pre>
<p>You will inadvertently create an indefinite recursion as jQuery will try to trigger the native event and will execute <code>elem[ type ]();</code> where elem will be your object and type your event name. If you need an event that has the same name as a method on the object you can use triggerHandler as it will not trigger the default event.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/qj0j5m9HAhkhGCqC6AfbTJmKYaM/0/da"><img src="http://feedads.g.doubleclick.net/~a/qj0j5m9HAhkhGCqC6AfbTJmKYaM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/qj0j5m9HAhkhGCqC6AfbTJmKYaM/1/da"><img src="http://feedads.g.doubleclick.net/~a/qj0j5m9HAhkhGCqC6AfbTJmKYaM/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/outbreak?a=1JAFSNH_hVI:-ztJPC8VA1o:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/outbreak?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=1JAFSNH_hVI:-ztJPC8VA1o:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/outbreak?i=1JAFSNH_hVI:-ztJPC8VA1o:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=1JAFSNH_hVI:-ztJPC8VA1o:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/outbreak?i=1JAFSNH_hVI:-ztJPC8VA1o:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://friedcell.net/outbreak/2009/01/04/using-jquery-for-event-handling-on-objects/feed/</wfw:commentRss>
		<feedburner:origLink>http://friedcell.net/outbreak/2009/01/04/using-jquery-for-event-handling-on-objects/</feedburner:origLink></item>
		<item>
		<title>The end and a new start</title>
		<link>http://feedproxy.google.com/~r/outbreak/~3/_7P1ywIC3rg/</link>
		<comments>http://friedcell.net/outbreak/2008/12/31/the-end-and-a-new-start/#comments</comments>
		<pubDate>Wed, 31 Dec 2008 18:48:38 +0000</pubDate>
		<dc:creator>fry</dc:creator>
		
		<category><![CDATA[blurps]]></category>

		<guid isPermaLink="false">http://friedcellcollective.net/outbreak/?p=246</guid>
		<description>It&amp;#8217;s the end of a year, a year of change for me.
I managed to finish my thesis so I&amp;#8217;m finally and officially Bsc of economics/business. My thesis talks about motivation of IT developers, an interesting subject for me and I learned a lot in the process of writing it. I hope to work more on [...]</description>
			<content:encoded><![CDATA[<p>It&#8217;s the end of a year, a year of change for me.</p>
<p>I managed to finish my thesis so I&#8217;m finally and officially Bsc of economics/business. My thesis talks about motivation of IT developers, an interesting subject for me and I learned a lot in the process of writing it. I hope to work more on this topic in the following years, especially with companies which have problems motivating people or just want to know how to motivate their employees better. We&#8217;ll see how it goes&#8230;</p>
<p>The other big change this year is that I switched jobs. After 8 years of working at a digital agency called Parsek I moved to a start-up called Zemanta. The responsibilities are quite different as at Parsek we worked for clients who sometimes made us do things that are not the best for end users (I know they meant good though). At Zemanta the team is smaller but the client base is much bigger as we have to cater directly to end users.</p>
<p>I&#8217;ve also won the Slovenian Young Interactive Entrepreneur award so I was a finalist for the International award and went on a tour of England&#8217;s digital industry in November. I didn&#8217;t win the award but it was a great tour with great contestants that I intend to keep in touch with.</p>
<h4>A new start</h4>
<p>In the new year I have a lot to do. A lot of the projects I was working on in 2008 are still running in 2009, I also hope to launch a new project this year. This means no rest for me - the first weeks of the new year are going to be hard work full time.</p>
<p>As posting in the previous months was quite slow I already have a set of things I want to write about in the new year so you can prepare for more reading in the near future.</p>
<p>I don&#8217;t want to go into details of my plans for the new year as it&#8217;s time to go celebrate - I&#8217;ll think and plan tomorrow.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/gXYuMmgjc3cwH1edr5wfXgulvL0/0/da"><img src="http://feedads.g.doubleclick.net/~a/gXYuMmgjc3cwH1edr5wfXgulvL0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/gXYuMmgjc3cwH1edr5wfXgulvL0/1/da"><img src="http://feedads.g.doubleclick.net/~a/gXYuMmgjc3cwH1edr5wfXgulvL0/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/outbreak?a=_7P1ywIC3rg:zNa7GRT1lX0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/outbreak?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=_7P1ywIC3rg:zNa7GRT1lX0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/outbreak?i=_7P1ywIC3rg:zNa7GRT1lX0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=_7P1ywIC3rg:zNa7GRT1lX0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/outbreak?i=_7P1ywIC3rg:zNa7GRT1lX0:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://friedcell.net/outbreak/2008/12/31/the-end-and-a-new-start/feed/</wfw:commentRss>
		<feedburner:origLink>http://friedcell.net/outbreak/2008/12/31/the-end-and-a-new-start/</feedburner:origLink></item>
		<item>
		<title>A quote from Michael Lewis</title>
		<link>http://feedproxy.google.com/~r/outbreak/~3/tj12IYn21i0/</link>
		<comments>http://friedcell.net/outbreak/2008/11/13/a-quote-from-michael-lewis/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 11:02:27 +0000</pubDate>
		<dc:creator>fry</dc:creator>
		
		<category><![CDATA[quotes]]></category>

		<category><![CDATA[thoughts]]></category>

		<guid isPermaLink="false">http://friedcellcollective.net/outbreak/?p=245</guid>
		<description>This is why there&amp;#8217;s a crisis going on.
In Bakersfield, California, a Mexican strawberry picker with an income of $14,000 and no English was lent every penny he needed to buy a house for $720,000.The End
Via markos.</description>
			<content:encoded><![CDATA[<p>This is why there&#8217;s a crisis going on.</p>
<blockquote cite="http://www.portfolio.com/news-markets/national-news/portfolio/2008/11/11/The-End-of-Wall-Streets-Boom"><p>In Bakersfield, California, a Mexican strawberry picker with an income of $14,000 and no English was lent every penny he needed to buy a house for $720,000.<span class="cite"><a href="http://www.portfolio.com/news-markets/national-news/portfolio/2008/11/11/The-End-of-Wall-Streets-Boom">The End</a></span></p></blockquote>
<p>Via <a href="http://markos.gaivo.net/blog">markos</a>.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/co1etNuFvxohuNSr5NQWWleejzY/0/da"><img src="http://feedads.g.doubleclick.net/~a/co1etNuFvxohuNSr5NQWWleejzY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/co1etNuFvxohuNSr5NQWWleejzY/1/da"><img src="http://feedads.g.doubleclick.net/~a/co1etNuFvxohuNSr5NQWWleejzY/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/outbreak?a=tj12IYn21i0:I3_N7duWHcQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/outbreak?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=tj12IYn21i0:I3_N7duWHcQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/outbreak?i=tj12IYn21i0:I3_N7duWHcQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=tj12IYn21i0:I3_N7duWHcQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/outbreak?i=tj12IYn21i0:I3_N7duWHcQ:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://friedcell.net/outbreak/2008/11/13/a-quote-from-michael-lewis/feed/</wfw:commentRss>
		<feedburner:origLink>http://friedcell.net/outbreak/2008/11/13/a-quote-from-michael-lewis/</feedburner:origLink></item>
		<item>
		<title>Search photos by colour</title>
		<link>http://feedproxy.google.com/~r/outbreak/~3/fRtiaup8GH8/</link>
		<comments>http://friedcell.net/outbreak/2008/10/24/search-photos-by-colour/#comments</comments>
		<pubDate>Fri, 24 Oct 2008 10:34:59 +0000</pubDate>
		<dc:creator>fry</dc:creator>
		
		<category><![CDATA[blurps]]></category>

		<guid isPermaLink="false">http://friedcellcollective.net/outbreak/?p=244</guid>
		<description>Image via Wikipedia

I find this so utterly amazing even though people here tell me it&amp;#8217;s not that hard to do. You can now search CCed Flickr photos by colour - this might probably be the easiest way to get to photos to use on mock-ups, much better than search where you have to rely on [...]</description>
			<content:encoded><![CDATA[<div class="zemanta-img"><a href="http://en.wikipedia.org/wiki/Image:Screenshot-HotTags-Flickr.png"><img src="http://upload.wikimedia.org/wikipedia/en/thumb/f/fe/Screenshot-HotTags-Flickr.png/202px-Screenshot-HotTags-Flickr.png" alt="A screenshot of hot tags on Flickr." /></a>
<p class="zemanta-img-attribution">Image via <a href="http://en.wikipedia.org/wiki/Image:Screenshot-HotTags-Flickr.png">Wikipedia</a></p>
</div>
<p>I find this so utterly amazing even though people here tell me it&#8217;s not that hard to do. You can now <a href="http://labs.ideeinc.com/multicolr">search CCed Flickr photos by colour</a> - this might probably be the easiest way to get to photos to use on mock-ups, much better than search where you have to rely on people <a class="zem_slink" title="Tag (metadata)" rel="wikipedia" href="http://en.wikipedia.org/wiki/Tag_%28metadata%29">tagging</a> photos correctly. The urls are even bookmarkable, which means you I can give you a link to the colours used on this blog: <a href="http://labs.ideeinc.com/multicolr/#colors=FF6600;">About</a>, <a href="http://labs.ideeinc.com/multicolr/#colors=003399;">Blog</a>, <a href="http://labs.ideeinc.com/multicolr/#colors=339933;">Projects</a>. You can even specify <a href="http://labs.ideeinc.com/multicolr/#colors=FF6600,003399,339933;">more colours</a> (via <a href="http://www.koornk.com/status/59525/">had@koornk</a>).</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/0f93ccf0-a352-4088-a3b2-1b7a473012ad/" title="Zemified by Zemanta"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=0f93ccf0-a352-4088-a3b2-1b7a473012ad" alt="Reblog this post [with Zemanta]" /></a></div>

<p><a href="http://feedads.g.doubleclick.net/~a/W2Mv3K6vMg5S3kwZxbtWGtEnKPI/0/da"><img src="http://feedads.g.doubleclick.net/~a/W2Mv3K6vMg5S3kwZxbtWGtEnKPI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/W2Mv3K6vMg5S3kwZxbtWGtEnKPI/1/da"><img src="http://feedads.g.doubleclick.net/~a/W2Mv3K6vMg5S3kwZxbtWGtEnKPI/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/outbreak?a=fRtiaup8GH8:1Jw5nEKSuEA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/outbreak?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=fRtiaup8GH8:1Jw5nEKSuEA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/outbreak?i=fRtiaup8GH8:1Jw5nEKSuEA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=fRtiaup8GH8:1Jw5nEKSuEA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/outbreak?i=fRtiaup8GH8:1Jw5nEKSuEA:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://friedcell.net/outbreak/2008/10/24/search-photos-by-colour/feed/</wfw:commentRss>
		<feedburner:origLink>http://friedcell.net/outbreak/2008/10/24/search-photos-by-colour/</feedburner:origLink></item>
		<item>
		<title>How jQuery.windowName.plugin works</title>
		<link>http://feedproxy.google.com/~r/outbreak/~3/LIFhCBLbJ5E/</link>
		<comments>http://friedcell.net/outbreak/2008/10/11/how-jquerywindownameplugin-works/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 22:21:10 +0000</pubDate>
		<dc:creator>fry</dc:creator>
		
		<category><![CDATA[blurps]]></category>

		<guid isPermaLink="false">http://friedcellcollective.net/outbreak/?p=243</guid>
		<description>I wanted to share a bit on how the window.name transport plugin for jQuery works, so developers in the crowd can find their way around the code and that you can understand what is going on and where can it break.
How it works
The plugin hijacks the $.ajax function and will do its magic when you’re [...]</description>
			<content:encoded><![CDATA[<p>I wanted to share a bit on how the window.name transport plugin for <a href="http://jquery.com/" title="JQuery" rel="homepage" class="zem_slink">jQuery</a> works, so developers in the crowd can find their way around the code and that you can understand what is going on and where can it break.</p>
<h4>How it works</h4>
<p>The plugin hijacks the $.<a href="http://en.wikipedia.org/wiki/Ajax_%28programming%29" title="Ajax (programming)" rel="wikipedia" class="zem_slink">ajax</a> function and will do its magic when you’re POSTing to a foreign (domain not same as domain of document) domain or you specify settings.windowname to force it. If these conditions are not met it will use the default ajax function to create the request.</p>
<p>The script first creates an <a href="http://en.wikipedia.org/wiki/IFrame" title="IFrame" rel="wikipedia" class="zem_slink">iframe</a> that will be the target of its request. If the request is of type GET it will open the location with the specified data as querystring in the iframe, if it’s a <a href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol" title="Hypertext Transfer Protocol" rel="wikipedia" class="zem_slink">POST request</a> it will first create a form with hidden fields that represent all data being sent. To allow sending of method, target, action and submit some magic is done (those override some important form object stuff) after which the form is posted to the iframe. This is readyState 2.</p>
<p>After the posted file is loaded (meaning it should have now set the window.name) an onload event is fired that loads an empty local file into the iframe. The empty local (same domain as the page) file can be set in the settings (settings.localfile) - if it isn’t the script will first try loading /robots.txt and /crossdomain.xml (two files commonly found in the root that are small) and if both fail it will load the page it’s on. All this is done only on IE where 404 doesn’t count as local. This is readyState 3.</p>
<p>When the local file is loaded and it is surely local we can read the text from the window.name. If it’s a string and it isn’t our default we set status to 200 and set the string as responseText, otherwise we set a 502 status. We can now cleanup which means removing the form, the iframe and all references we created in the global space.</p>
<p>The whole thing is written in such a manner that it will return a fully qualified <a href="http://en.wikipedia.org/wiki/XMLHttpRequest" title="XMLHttpRequest" rel="wikipedia" class="zem_slink">XMLHttpRequest</a> object with all methods and properties. You can abort the request and it will cancel loading and clean up, you can access readyState, responseText and everything else you’d do to an XHR object. It does however not implement features that cannot be used due to the fact that it’s an ordinary form submit - setting headers and such.</p>
<h4>Interesting use</h4>
<p>I’ve found that window.name transport is ideal for saving files - you can force the window.name transport to a url that will return a file with an Content-disposition: attachment; header. When the file loads you’ll get a popup to save it and the frame will disappear automatically. It’s even more convenient if you’re creating the file with a POST request.</p>
<h4>Download</h4>
<p>You can <a href="http://friedcellcollective.net/outbreak/jsjquerywindownameplugin/#anchor-download-241">download the plugin here</a> or you can go to <a href="http://plugins.jquery.com/project/windowNameTransport">the jQuery plugins page to get it</a></p>
<h6 class="zemanta-related-title">Related articles by Zemanta</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://ajaxian.com/archives/cross-site-xmlhttprequest-in-firefox-3">Cross-Site XMLHttpRequest in Firefox 3</a></li>
<li class="zemanta-article-ul-li"><a href="http://blogs.msdn.com/ie/archive/2008/10/06/updates-for-ajax-in-ie8-beta-2.aspx">Updates for AJAX in IE8 Beta 2</a></li>
<li class="zemanta-article-ul-li"><a href="http://google-code-updates.blogspot.com/2008/04/state-of-ajax-at-google-io-performance.html">State of Ajax at Google I/O: Performance, Performance, Performance</a></li>
</ul>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/d4b470d8-c0d7-42f1-b998-9d385fbcc61b/" title="Zemified by Zemanta"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=d4b470d8-c0d7-42f1-b998-9d385fbcc61b" alt="Reblog this post [with Zemanta]" /></a></div>

<p><a href="http://feedads.g.doubleclick.net/~a/qYpk6LhfEY_shGwG-3NZ3uPW5OM/0/da"><img src="http://feedads.g.doubleclick.net/~a/qYpk6LhfEY_shGwG-3NZ3uPW5OM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/qYpk6LhfEY_shGwG-3NZ3uPW5OM/1/da"><img src="http://feedads.g.doubleclick.net/~a/qYpk6LhfEY_shGwG-3NZ3uPW5OM/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/outbreak?a=LIFhCBLbJ5E:alyHs66GyfU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/outbreak?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=LIFhCBLbJ5E:alyHs66GyfU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/outbreak?i=LIFhCBLbJ5E:alyHs66GyfU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/outbreak?a=LIFhCBLbJ5E:alyHs66GyfU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/outbreak?i=LIFhCBLbJ5E:alyHs66GyfU:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://friedcell.net/outbreak/2008/10/11/how-jquerywindownameplugin-works/feed/</wfw:commentRss>
		<feedburner:origLink>http://friedcell.net/outbreak/2008/10/11/how-jquerywindownameplugin-works/</feedburner:origLink></item>
	</channel>
</rss>
