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

<channel>
	<title>A Modern Fable</title>
	<atom:link href="http://blog.amodernfable.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.amodernfable.com</link>
	<description>Making Web 2.0 More Than a Catchprhase</description>
	<pubDate>Fri, 26 Feb 2010 16:45:26 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>jQuery Bookmarklet</title>
		<link>http://blog.amodernfable.com/2010/02/26/jquery-bookmarklet/</link>
		<comments>http://blog.amodernfable.com/2010/02/26/jquery-bookmarklet/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 16:45:26 +0000</pubDate>
		<dc:creator>ajm</dc:creator>
		
		<category><![CDATA[development]]></category>

		<category><![CDATA[bookmarklet]]></category>

		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://blog.amodernfable.com/?p=272</guid>
		<description><![CDATA[Inject the latest version of jQuery into your page. All in handy bookmarklet form!
Drag the link below to your toolbar and you&#8217;re set:
jQueryify
]]></description>
			<content:encoded><![CDATA[<p>Inject the latest version of jQuery into your page. All in handy bookmarklet form!</p>
<p>Drag the link below to your toolbar and you&#8217;re set:<br />
<a href="javascript:var%20s=document.createElement('script');s.setAttribute('src','http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js');document.getElementsByTagName('body')[0].appendChild(s);s.onload=function(){j=jQuery.noConflict();alert('jQuery%20loaded%20no-conflict%20mode.\n%20Use%20j()%20for%20your%20selectors.');};void(s);">jQueryify</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.amodernfable.com/2010/02/26/jquery-bookmarklet/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Facebook login broken in Safari 4 beta?</title>
		<link>http://blog.amodernfable.com/2009/05/30/facebook-login-broken-in-safari-4-beta/</link>
		<comments>http://blog.amodernfable.com/2009/05/30/facebook-login-broken-in-safari-4-beta/#comments</comments>
		<pubDate>Sat, 30 May 2009 14:22:35 +0000</pubDate>
		<dc:creator>ajm</dc:creator>
		
		<category><![CDATA[cross browser]]></category>

		<category><![CDATA[bug]]></category>

		<category><![CDATA[cursor blue ball]]></category>

		<category><![CDATA[mac osx]]></category>

		<category><![CDATA[safari]]></category>

		<guid isPermaLink="false">http://blog.amodernfable.com/?p=266</guid>
		<description><![CDATA[Here&#8217;s a fun, major example of a cross-browser bug in the wild. It seems that, for certain users of the Safari 4 beta (latest update after the Mac OSX release), logging into Facebook is totally hosed. If I try to log in, Safari gives me a cursor with a lovely blue ball. It doesn&#8217;t even [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a fun, major example of a cross-browser bug in the wild. It seems that, for certain users of the Safari 4 beta (latest update after the Mac OSX release), logging into Facebook is totally hosed. If I try to log in, Safari gives me a cursor with a lovely blue ball. It doesn&#8217;t even spin like the beach ball of death.</p>
<p>Running the Safari Developer tools error console yields the following errors on Facebook&#8217;s end:</p>
<p>
<tt>Unsafe JavaScript attempt to access frame with URL http://www.facebook.com/home.php? from frame with URL<br />
 http://static.ak.facebook.com/common/redirectiframe.html. Domains, protocols and ports must match.</tt></p>
<p><tt>Unsafe JavaScript attempt to access frame with URL http://www.facebook.com/home.php? from frame with URL<br />
 http://0.channel14.facebook.com:80/[snip...]. Domains, protocols and ports must match.<br />
</tt></p>
<p>Basically, it looks like Facebook&#8217;s trying to send a request during the login process from a subdomain of their site. Safari&#8217;s flagging it as breaking the AJAX &#8220;same origin&#8221; URL policy and preventing the request from completing. By acting correctly - Facebook&#8217;s requests are indeed breaking the same origin policy -  Safari&#8217;s also blocking me (and <a href="http://discussions.apple.com/thread.jspa?messageID=9539042#9539042" onclick="window.open('http://discussions.apple.com/thread.jspa?messageID=9539042#9539042');return false;">a whole bunch of other people</a>) from being able to login. (Now, I could be wrong here with the exact cause of the behavior, but the bottom line is <em>something</em> on Facebook is still totally breaking login in Safari 4.)</p>
<p>Is the new Safari being too strict? Why can I login in Firefox and Google Chrome? Is this an odd use case in a browser with a small market share (I&#8217;m guessing less than 4% of Facebook&#8217;s base) that wouldn&#8217;t be caught during testing as it&#8217;s not part of Facebook&#8217;s test platform, or is it a legitimate cross-browser bug that will be solved?</p>
<p>Clearing my cache (holding SHIFT and pressing the refresh button in the address bar or holding CONTROL + F5 / CONTROL + FN + F5 on a macbook) seemed to do the trick: the requests still showed up as failing, but I was able to log in. But, I&#8217;m still interested to see if this winds up being a fairly high-profile example of cross-browser development&#8217;s pitfalls on a really big stage.</p>
<p>Very, very odd.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.amodernfable.com/2009/05/30/facebook-login-broken-in-safari-4-beta/feed/</wfw:commentRss>
		</item>
		<item>
		<title>YUI IE8 Selector utility bug</title>
		<link>http://blog.amodernfable.com/2009/05/22/yui-ie8-selector-utility-bug/</link>
		<comments>http://blog.amodernfable.com/2009/05/22/yui-ie8-selector-utility-bug/#comments</comments>
		<pubDate>Fri, 22 May 2009 20:50:35 +0000</pubDate>
		<dc:creator>ajm</dc:creator>
		
		<category><![CDATA[code]]></category>

		<category><![CDATA[bug]]></category>

		<category><![CDATA[class]]></category>

		<category><![CDATA[ie8]]></category>

		<category><![CDATA[selector]]></category>

		<category><![CDATA[yui]]></category>

		<guid isPermaLink="false">http://blog.amodernfable.com/2009/05/22/yui-ie8-selector-utility-bug/</guid>
		<description><![CDATA[Versions of the YUI Selector utility prior to 2.7.0 won&#8217;t work with IE 8. There&#8217;s a bug in there somewhere that breaks className selectors.
So, something like div.bd won&#8217;t return any results.
The solution is to upgrade to 2.7.0. I&#8217;m working on a site on which I can&#8217;t upgrade the whole package; it would take too much [...]]]></description>
			<content:encoded><![CDATA[<p>Versions of the YUI Selector utility prior to 2.7.0 won&#8217;t work with IE 8. There&#8217;s a bug in there somewhere that breaks className selectors.</p>
<p>So, something like div.bd won&#8217;t return any results.</p>
<p>The solution is to upgrade to 2.7.0. I&#8217;m working on a site on which I can&#8217;t upgrade the whole package; it would take too much QA time. So, I tried dropping Selector 2.7.0 over the existing file (in my case, an ancient 2.5.2 version). The result: seems to work like a charm, so it&#8217;s worth a try.</p>
<p>EDIT: Also just saw that IE8 likes to detect our internal dev servers as intranet sites and throw itself into IE7 compatibility mode. Make sure you use developer tools on whatever site you&#8217;re testing (production, in my case), and then reset them wherever you&#8217;re developing.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.amodernfable.com/2009/05/22/yui-ie8-selector-utility-bug/feed/</wfw:commentRss>
		</item>
		<item>
		<title>It&#8217;s a launch!</title>
		<link>http://blog.amodernfable.com/2009/05/14/its-a-launch-2/</link>
		<comments>http://blog.amodernfable.com/2009/05/14/its-a-launch-2/#comments</comments>
		<pubDate>Thu, 14 May 2009 21:28:47 +0000</pubDate>
		<dc:creator>ajm</dc:creator>
		
		<category><![CDATA[code]]></category>

		<category><![CDATA[launch]]></category>

		<category><![CDATA[web development]]></category>

		<category><![CDATA[yui]]></category>

		<guid isPermaLink="false">http://blog.amodernfable.com/?p=260</guid>
		<description><![CDATA[Have a look at that lovely Learn and Explore section on NikonUSA.
Copious uses of the YUI library and a whole bunch of lightbox / media player functionality that I hacked together. My favorite part: the in-page glossary (nice little RegExp there) and the little lava menu I worked up on any of the Glossary pages.
]]></description>
			<content:encoded><![CDATA[<p>Have a look at that lovely <a href="http://www.nikonusa.com/Learn-And-Explore/index.page" onclick="window.open('http://www.nikonusa.com/Learn-And-Explore/index.page');return false;">Learn and Explore section on NikonUSA.</a></p>
<p>Copious uses of the <a href="http://developer.yahoo.com/yui/" onclick="window.open('http://developer.yahoo.com/yui/');return false;">YUI library</a> and a whole bunch of lightbox / media player functionality that I hacked together. My favorite part: the in-page glossary (nice little RegExp there) and the little lava menu I worked up on any of the Glossary pages.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.amodernfable.com/2009/05/14/its-a-launch-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Note to self&#8230;</title>
		<link>http://blog.amodernfable.com/2009/05/14/note-to-self/</link>
		<comments>http://blog.amodernfable.com/2009/05/14/note-to-self/#comments</comments>
		<pubDate>Thu, 14 May 2009 21:23:33 +0000</pubDate>
		<dc:creator>ajm</dc:creator>
		
		<category><![CDATA[code]]></category>

		<category><![CDATA[callbacks]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[settimeout]]></category>

		<guid isPermaLink="false">http://blog.amodernfable.com/2009/05/14/note-to-self/</guid>
		<description><![CDATA[If you&#8217;re running an animation for 250 ms and you need a function to execute after that, make sure you either run it as a call back or set a timer that&#8217;s longer than 250 ms&#8230;
]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re running an animation for 250 ms and you need a function to execute after that, make sure you either run it as a call back or set a timer that&#8217;s longer than 250 ms&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.amodernfable.com/2009/05/14/note-to-self/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Copying an HTMLElement&#8217;s styles to another &#8230; all of them</title>
		<link>http://blog.amodernfable.com/2009/05/14/copying-an-htmlelements-styles-to-another-all-of-them/</link>
		<comments>http://blog.amodernfable.com/2009/05/14/copying-an-htmlelements-styles-to-another-all-of-them/#comments</comments>
		<pubDate>Thu, 14 May 2009 19:57:41 +0000</pubDate>
		<dc:creator>ajm</dc:creator>
		
		<category><![CDATA[css]]></category>

		<category><![CDATA[computed style]]></category>

		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://blog.amodernfable.com/?p=255</guid>
		<description><![CDATA[Kind of a thought experiment. You have one HTMLElement with a bunch of unknown style properties set on an ID selector or Element selector, and you need to get them over to another, completely different Element.
Paul and I came up with this:


// transfer an element's styles to another element.
// adam mcintyre &#038; paul irish
// public [...]]]></description>
			<content:encoded><![CDATA[<p>Kind of a thought experiment. You have one HTMLElement with a bunch of unknown style properties set on an ID selector or Element selector, and you need to get them over to another, completely different Element.</p>
<p><a href="http://paulirish.com">Paul</a> and I came up with this:</p>
<pre>

// transfer an element's styles to another element.
// adam mcintyre &#038; paul irish
// public domain, bitchezzz.

// we'll start with an h1.
var el = document.getElementsByTagName('h1')[0];

var cStyle = ''; 

for(var i in el.style){      

  if(typeof el.style[i] != 'function'){ 

    cStyle += i.replace(/([A-Z])/g,'-$1').toLowerCase() +
    ':' +
    (document.defaultView.getComputedStyle(el,null)
      .getPropertyValue(i) || 'none') +
    ';'
  }
}

// at this point cStyle is a big long string of
// display:block;opacity:1;css-text:none;parent-rule:none;azimuth:none;....

// h3's will grow up big and strong like h1's!!!!
document.getElementsByTagName('h3')[0].style.cssText = cStyle;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.amodernfable.com/2009/05/14/copying-an-htmlelements-styles-to-another-all-of-them/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Working with Omniture?</title>
		<link>http://blog.amodernfable.com/2009/05/12/working-with-omniture/</link>
		<comments>http://blog.amodernfable.com/2009/05/12/working-with-omniture/#comments</comments>
		<pubDate>Tue, 12 May 2009 22:22:06 +0000</pubDate>
		<dc:creator>ajm</dc:creator>
		
		<category><![CDATA[code]]></category>

		<category><![CDATA[data and analytics]]></category>

		<category><![CDATA[omniture]]></category>

		<guid isPermaLink="false">http://blog.amodernfable.com/2009/05/12/working-with-omniture/</guid>
		<description><![CDATA[Data not going through? Try adding a call to s.tl() to flush things out and make sure they&#8217;re sent to Omniture. It seems to not want to send certain custom events by default.
]]></description>
			<content:encoded><![CDATA[<p>Data not going through? Try adding a call to s.tl() to flush things out and make sure they&#8217;re sent to Omniture. It seems to not want to send certain custom events by default.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.amodernfable.com/2009/05/12/working-with-omniture/feed/</wfw:commentRss>
		</item>
		<item>
		<title>NikonUSA plug</title>
		<link>http://blog.amodernfable.com/2009/05/01/nikonusa-plug/</link>
		<comments>http://blog.amodernfable.com/2009/05/01/nikonusa-plug/#comments</comments>
		<pubDate>Fri, 01 May 2009 15:13:29 +0000</pubDate>
		<dc:creator>ajm</dc:creator>
		
		<category><![CDATA[development]]></category>

		<category><![CDATA[projects]]></category>

		<category><![CDATA[i built it]]></category>

		<guid isPermaLink="false">http://blog.amodernfable.com/?p=251</guid>
		<description><![CDATA[
QUICK TAKE: Stay up to date on the latest news from Nikon, producer of much-heralded cameras, scanners, and other imaging

Nikon site ranked #13 in the Top 100 photo sites. Not too shabby.
]]></description>
			<content:encoded><![CDATA[<blockquote><p>
QUICK TAKE: Stay up to date on the latest news from Nikon, producer of much-heralded cameras, scanners, and other imaging
</p></blockquote>
<p>Nikon site <a href="http://www.web100.com/photo-100/gear-and-equipment/nikon-cameras">ranked #13 in the Top 100 photo sites</a>. Not too shabby.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.amodernfable.com/2009/05/01/nikonusa-plug/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CakePHP - Helper filenames must be lower case?</title>
		<link>http://blog.amodernfable.com/2009/03/07/cakephp-helper-filenames-must-be-lower-case/</link>
		<comments>http://blog.amodernfable.com/2009/03/07/cakephp-helper-filenames-must-be-lower-case/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 20:38:51 +0000</pubDate>
		<dc:creator>ajm</dc:creator>
		
		<category><![CDATA[code]]></category>

		<category><![CDATA[cakephp]]></category>

		<guid isPermaLink="false">http://blog.amodernfable.com/2009/03/07/cakephp-helper-filenames-must-be-lower-case/</guid>
		<description><![CDATA[Bit of an odd one. It seems that in between the beta version of CakePHP 1.2 that I&#8217;ve been using and the full release, Helpers now must have lower-case filenames or they go missing. 
You&#8217;ll wind up with a null object error otherwise. 
I wonder if I did something wrong?
]]></description>
			<content:encoded><![CDATA[<p>Bit of an odd one. It seems that in between the beta version of CakePHP 1.2 that I&#8217;ve been using and the full release, Helpers now must have lower-case filenames or they go missing. </p>
<p>You&#8217;ll wind up with a null object error otherwise. </p>
<p>I wonder if I did something wrong?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.amodernfable.com/2009/03/07/cakephp-helper-filenames-must-be-lower-case/feed/</wfw:commentRss>
		</item>
		<item>
		<title>YUI Cookie utility and single-page cookies</title>
		<link>http://blog.amodernfable.com/2009/02/09/yui-cookie-utility-and-single-page-cookies/</link>
		<comments>http://blog.amodernfable.com/2009/02/09/yui-cookie-utility-and-single-page-cookies/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 17:06:19 +0000</pubDate>
		<dc:creator>ajm</dc:creator>
		
		<category><![CDATA[yui]]></category>

		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.amodernfable.com/?p=241</guid>
		<description><![CDATA[I&#8217;m doing a bit of work with cookies, so I figured that I&#8217;d give YUI&#8217;s Cookie utility a try. Got it up and running on a proof of concept with no problem and it worked pretty well. However, once I moved off the proof of concept, it seemed like my cookies were only living for [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m doing a bit of work with cookies, so I figured that I&#8217;d give YUI&#8217;s Cookie utility a try. Got it up and running on a proof of concept with no problem and it worked pretty well. However, once I moved off the proof of concept, it seemed like my cookies were only living for one page.</p>
<p>A quick inspection with Firecookie revealed that the Cookie utility was creating a huge number of cookies with the same name and binding them to a single page by default. (At least in 2.5.2). If you&#8217;re on that branch (I can&#8217;t upgrade a production instance, for example), make sure you add a path to the cookie you&#8217;re creating if you&#8217;d like the cookie to be readable and writable by more than the page you&#8217;re on. That would look something like this:</p>
<p><pre>
        YAHOO.util.Cookie.set('someName','someValue, {
            expires : new Date('January 1, 2010'),
            path : "/"
        });
</pre>
</p>
<p>That will make your cookie readable beyond a single page and might save you a headache.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.amodernfable.com/2009/02/09/yui-cookie-utility-and-single-page-cookies/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->