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

<channel>
	<title>sweetnr</title>
	<atom:link href="http://sweetnr.com/feed" rel="self" type="application/rss+xml" />
	<link>http://sweetnr.com</link>
	<description></description>
	<lastBuildDate>Mon, 05 Jul 2010 09:11:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Using RequireJS with frontal</title>
		<link>http://sweetnr.com/226</link>
		<comments>http://sweetnr.com/226#comments</comments>
		<pubDate>Mon, 05 Jul 2010 08:30:34 +0000</pubDate>
		<dc:creator>carl</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sweetnr.com/?p=226</guid>
		<description><![CDATA[<p><a href="http://requirejs.org">RequireJS</a> is a JavaScript loader and module manager. It's great for loading scripts concurrently and without blocking the page from rendering.</p>

<p>Frontal now supports a simple plugin architecture. Using the <em>.register</em> method it's possible to mix functionality directly into frontal.</p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://requirejs.org">RequireJS</a> is a JavaScript loader and module manager. It&#8217;s great for loading scripts concurrently and without blocking the page from rendering.</p>
<p>Frontal now supports a simple plugin architecture. Using the <em>.register</em> method it&#8217;s possible to mix functionality directly into frontal.</p>
<p>After including RequireJS in my page I can mix it&#8217;s functionality into frontal with just one line of code:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript">$frn.<span style="color: #660066;">register</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'require'</span><span style="color: #339933;">,</span> require<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Now I can use frontal rules with RequireJS:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript">$frn.<span style="color: #660066;">require</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'/path'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'include.js'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>A frontal plugin&#8217;s first argument is the path for the rule to match. Any subsequent arguments are passed directly to the function referenced in the call to <em>.register</em> and executed when the path matches the current location. Plugins will also work with the queuing functionality of frontal.</p>
<p>So now I can write frontal rules which automatically load my dependencies through RequireJS, triggering my callback when they have finished loading.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript">$frn.<span style="color: #660066;">require</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'/path'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'include.js'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #006600; font-style: italic;">// Do something with the loaded scripts when they're ready.</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Frontal rules combined with the loading power of RequireJS are a great way to manage script dependencies while reducing request overhead.</p>
<p>The latest release of frontal with plugin support is available on <a href="http://github.com/carlmw/frontal">github</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sweetnr.com/226/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pixel rot</title>
		<link>http://sweetnr.com/218</link>
		<comments>http://sweetnr.com/218#comments</comments>
		<pubDate>Mon, 21 Jun 2010 18:21:56 +0000</pubDate>
		<dc:creator>carl</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://sweetnr.com/?p=218</guid>
		<description><![CDATA[When a design has spent so long in photoshop that every pixel has been polished to perfection. When your design can&#8217;t be implemented without resorting to image maps it&#8217;s gone too far. When theres no real text on the page its not a web page anymore it&#8217;s a JPEG.
&#60;RANT&#62;
For crying out loud, get it into [...]]]></description>
			<content:encoded><![CDATA[<p>When a design has spent so long in photoshop that every pixel has been polished to perfection. When your design can&#8217;t be implemented without resorting to image maps it&#8217;s gone too far. When theres no real text on the page its not a web page anymore it&#8217;s a JPEG.</p>
<p>&lt;RANT&gt;<br />
For crying out loud, get it into a browser quickly and iterate; work with the medium not around it. &lt;/RANT&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://sweetnr.com/218/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adding some jQuery sugar to frontal</title>
		<link>http://sweetnr.com/194</link>
		<comments>http://sweetnr.com/194#comments</comments>
		<pubDate>Sun, 11 Apr 2010 16:51:09 +0000</pubDate>
		<dc:creator>carl</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[frontal]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://sweetnr.com/?p=194</guid>
		<description><![CDATA[I've just pushed a new feature and some minor tweaks to the <a href="http://github.com/carlmw/frontal">frontal project on github</a>.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just pushed a new feature and some minor tweaks to the <a href="http://github.com/carlmw/frontal">frontal project on github</a>.</p>
<h2>jQuery chaining</h2>
<p>With the new jQuery module included (<a href="http://github.com/carlmw/frontal/blob/master/frontal.jquery.js">frontal.jquery.js</a>) it&#8217;s now possible to use frontal rules with jQuery&#8217;s fluent interface.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript">$.<span style="color: #660066;">frontal</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'/some/path'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'something'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>If the frontal rule passed to $.frontal matches the page location a jQuery object containing the page <em>&lt;body&gt;</em> element is returned; should the rule fail to match an empty jQuery object is returned.</p>
<h2>.data() now accepts key value pairs</h2>
<p>Instead of just getting and setting one big chuck of data it&#8217;s now possible to store values and retrieve them with keys.</p>
<h3>Setting</h3>

<div class="wp_syntax"><div class="code"><pre class="javascript">$frn.<span style="color: #660066;">data</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'key'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'value'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">data</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'this'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'that'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>Getting</h3>

<div class="wp_syntax"><div class="code"><pre class="javascript">$frn.<span style="color: #660066;">data</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'key'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// 'value'</span>
$frn.<span style="color: #660066;">data</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'this'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// 'that'</span></pre></div></div>

<h2>Domain is removed with .location()</h2>
<p>When setting the page location with .location() any domain and protocol that might be preceding the path is automatically removed. This makes it easier to bind ajaxy functionality to links and handle the responses with frontal (particularly in IE which includes the domain when accessing the href attribute — dammit).</p>
<p>I&#8217;m getting to grips with how I think frontal can be used now so I&#8217;m going to start producing some proper API documentation.</p>
<p><a href="http://github.com/carlmw/frontal">Head over to the github repo for the funsies.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://sweetnr.com/194/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Typekit, slow hosted scripts and the Flash of Unset Text</title>
		<link>http://sweetnr.com/105</link>
		<comments>http://sweetnr.com/105#comments</comments>
		<pubDate>Sun, 28 Mar 2010 15:23:16 +0000</pubDate>
		<dc:creator>carl</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[fonts]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[typekit]]></category>

		<guid isPermaLink="false">http://sweetnr.com/?p=105</guid>
		<description><![CDATA[<p><img src="/wp-content/uploads/2010/03/typekit-logo.png" alt="Typekit logo" class="logo" />While working on the forthcoming redesign of the Beam website, <a href="http://www.fontshop.com/fonts/downloads/fontfont/ff_din_web/">FF DIN</a> was made available for licensing with @font-face in WOFF format. It was also released on <a href="http://typekit.com">Typekit</a>.</p>

<p>DIN is Beam's corporate font and this news presented me with an opportunity to pursue Typekit as an alternative to font replacement techniques like <a href="http://wiki.novemberborn.net/sifr/">sIFR</a> and <a href="http://wiki.github.com/sorccu/cufon/about">Cufón</a>.</p>

<p>While it would appear that the perfect solution had just dropped into my lap; Typekit is a hosted service and this dependance on an external service concerned me.</p>]]></description>
			<content:encoded><![CDATA[<p><img src="/wp-content/uploads/2010/03/typekit-logo.png" alt="Typekit logo" class="logo" width="200" height="60" />While working on the forthcoming redesign of the Beam website, <a href="http://www.fontshop.com/fonts/downloads/fontfont/ff_din_web/">FF DIN</a> was made available for licensing with @font-face in WOFF format. It was also released on <a href="http://typekit.com">Typekit</a>.</p>
<p>DIN is Beam&#8217;s corporate font and this news presented me with an opportunity to pursue Typekit as an alternative to font replacement techniques like <a href="http://wiki.novemberborn.net/sifr/">sIFR</a> and <a href="http://wiki.github.com/sorccu/cufon/about">Cufón</a>.</p>
<p>While it would appear that the perfect solution had just dropped into my lap; Typekit is a hosted service and this dependance on an external service concerned me.</p>
<h2>What if the Typekit service was unavailable?</h2>
<p>I started testing the effect of a prolonged delay on the rendering of the page. I created a PHP script that sleeps for 5 seconds and then returns the Typekit loader.</p>
<h2>Loading typekit in the HEAD</h2>
<p>First I initiated Typekit in the HEAD of the document. This breaks Rule 6 of <a href="http://stevesouders.com/hpws/rules.php">high performance web sites</a>; but i decided to include it for completeness.</p>

<div class="wp_syntax"><div class="code"><pre class="html">&lt;head&gt;
    &lt;script src=&quot;http://phil/slow-typekit-loader.php?duration=5&quot;&gt;&lt;/script&gt;
    &lt;script&gt;try{Typekit.load();}catch(e){}&lt;/script&gt;
&lt;/head&gt;</pre></div></div>

<p><figure><br />
<img title="Typekit loading in the document HEAD" src="/wp-content/uploads/2010/03/screen_cap1.png" alt="Net panel output" /><br />
<figcaption>Net panel output of my delayed Typekit loading in the document HEAD.</figcaption><br />
</figure></p>
<p>As I&#8217;d expected the page <strong>doesn&#8217;t render at all</strong> until Typekit has responded. This would be a  pretty terrible situation.</p>
<h2>Loading Typekit at the bottom of the page BODY</h2>
<p>Including the SCRIPT at the foot of the page will allow the page to render while we&#8217;re still waiting for Typekit to download.</p>

<div class="wp_syntax"><div class="code"><pre class="html">&lt;body&gt;
    &lt;script src=&quot;http://phil/slow-typekit-loader.php?duration=5&quot;&gt;&lt;/script&gt;
    &lt;script&gt;try{Typekit.load();}catch(e){}&lt;/script&gt;
&lt;/body&gt;</pre></div></div>

<p><figure><br />
<img src="/wp-content/uploads/2010/03/screen_cap2.png" alt="Net panel output" title="Typekit loading in the document BODY"/><br />
<figcaption>Net panel output of delayed Typekit loading in the document BODY</figcaption><br />
</figure></p>
<p>Much better! The page can render even while we&#8217;re still waiting for Typekit. But in that time while we&#8217;re waiting for Typekit our text is rendered in <strong>default system fonts</strong> and only rendered in our web font when it&#8217;s finished downloading. This isn&#8217;t exactly desirable.</p>
<h2>Use a &#8216;best fit stack&#8217; to soften the shock</h2>
<p>In last years 24 ways Mark Boulton wrote <a href="http://24ways.org/2009/designing-for-the-switch">&#8216;Designing for the switch&#8217;</a>. In it he suggests specifying a set of system fonts that look similar to our desired web font. This will help us reduce the impact of our flash of unset text.</p>
<p><figure><br />
<img src="http://sweetnr.com/wp-content/uploads/2010/03/screen_cap3.png" alt="" /><br />
<figcaption>The best fit stack, in this case i used &#8216;Lucida Grande&#8217;, &#8216;Lucida Sans Unicode&#8217; and &#8216;Lucida Sans&#8217;</figcaption><br />
</figure></p>
<p>That&#8217;s a good start.</p>
<h2>Use some JavaScript and CSS to transition</h2>
<p>The Typekit library adds a class of &#8216;tk-active&#8217; to the page BODY after the fonts are loaded; we&#8217;ll use this as a hook for some styling to hide the content of the page until our fonts are available.</p>
<p><figure></p>

<div class="wp_syntax"><div class="code"><pre class="css">.tk-loading<span style="color: #00AA00;">&#123;</span>
    opacity<span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
.tk-active<span style="color: #00AA00;">&#123;</span>
    opacity<span style="color: #00AA00;">:</span><span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
    -moz-transition<span style="color: #00AA00;">:</span>0.2s opacity ease-in<span style="color: #00AA00;">;</span>
    -webkit-transition<span style="color: #00AA00;">:</span>0.2s opacity ease-in<span style="color: #00AA00;">;</span>
    transition<span style="color: #00AA00;">:</span>0.2s opacity ease-in<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p><figcaption>We can use CSS transitions to add a slight opacity tween after our fonts have loaded.</figcaption>
</pre>

<div class="wp_syntax"><div class="code"><pre class="javascript"><span style="color: #339933;">&lt;</span>body <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;tk-loading&quot;</span><span style="color: #339933;">&gt;</span>
&nbsp;
...
&nbsp;
<span style="color: #339933;">&lt;</span>script src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;http://use.typekit.com/KIT_ID.js&quot;</span><span style="color: #339933;">&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>script<span style="color: #339933;">&gt;</span>
    <span style="color: #000066; font-weight: bold;">try</span><span style="color: #009900;">&#123;</span>
        Typekit.<span style="color: #660066;">load</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #000066; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>body<span style="color: #339933;">&gt;</span></pre></div></div>

<p>This will hide the contents of our page and show it once Typekit has loaded our fonts. But that brings us back to square one. If Typekit is taking a long time to load our page won't be displayed <img src='http://sweetnr.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  .</p>
<h2>Add some magic with LABjs</h2>
<p><a href="http://labjs.com/">LABjs</a> is a great tool for managing JavaScript execution and dependencies.</p>
<p>The first thing we'll do is switch to using JavaScript to set our loading class. We'll do this so that users with JavaScript disabled won't be affected by our meddling.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript"><span style="color: #339933;">&lt;</span>body<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>script<span style="color: #339933;">&gt;</span>
document.<span style="color: #660066;">body</span>.<span style="color: #660066;">className</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'tk-loading'</span><span style="color: #339933;">;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>
...
<span style="color: #339933;">&lt;/</span>body<span style="color: #339933;">&gt;</span></pre></div></div>

<p>Next we'll load Typekit using LABjs.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript"><span style="color: #339933;">&lt;</span>body<span style="color: #339933;">&gt;</span>
&nbsp;
...
&nbsp;
<span style="color: #339933;">&lt;</span>script<span style="color: #339933;">&gt;</span>
$LAB.<span style="color: #660066;">script</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'http://use.typekit.com/KIT_ID.js'</span><span style="color: #009900;">&#41;</span>
    .<span style="color: #660066;">wait</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">try</span><span style="color: #009900;">&#123;</span>
            Typekit.<span style="color: #660066;">load</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span><span style="color: #000066; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>body<span style="color: #339933;">&gt;</span></pre></div></div>

<p><figure><br />
<img src="/wp-content/uploads/2010/03/screen_cap5.png" alt="Net panel output when using LABjs"/><br />
<figcaption>Net panel output with the delayed Typekit loading through LABjs.</figcaption><br />
</figure></p>
<p>Another advantage to loading Typekit with LABjs is that we can load other libraries asynchronously and execute them independently. This is great because should Typekit or any other externally loaded script take a while to load it won't block any other scripts.</p>
<p>We'll also add a timeout to our page to add our 'tk-active' class, just in case Typekit takes too long to load (we have to do everything we can to ensure the user isn't stuck with a blank page).</p>

<div class="wp_syntax"><div class="code"><pre class="javascript"><span style="color: #339933;">&lt;</span>body<span style="color: #339933;">&gt;</span>
&nbsp;
...
&nbsp;
<span style="color: #339933;">&lt;</span>script<span style="color: #339933;">&gt;</span>
    setTimeout<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        document.<span style="color: #660066;">body</span>.<span style="color: #660066;">className</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'tk-active'</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>body<span style="color: #339933;">&gt;</span></pre></div></div>

<h2>Putting it all together</h2>

<div class="wp_syntax"><div class="code"><pre class="javascript"><span style="color: #339933;">&lt;!</span>DOCTYPE html<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>html<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>head<span style="color: #339933;">&gt;</span>
    <span style="color: #339933;">&lt;</span>style<span style="color: #339933;">&gt;</span>
    .<span style="color: #660066;">tk</span><span style="color: #339933;">-</span>loading<span style="color: #009900;">&#123;</span>
        opacity<span style="color: #339933;">:</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    .<span style="color: #660066;">tk</span><span style="color: #339933;">-</span>active<span style="color: #009900;">&#123;</span>
        opacity<span style="color: #339933;">:</span><span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
        <span style="color: #339933;">-</span>moz<span style="color: #339933;">-</span>transition<span style="color: #339933;">:</span>0.2s opacity ease<span style="color: #339933;">-</span><span style="color: #000066; font-weight: bold;">in</span><span style="color: #339933;">;</span>
        <span style="color: #339933;">-</span>webkit<span style="color: #339933;">-</span>transition<span style="color: #339933;">:</span>0.2s opacity ease<span style="color: #339933;">-</span><span style="color: #000066; font-weight: bold;">in</span><span style="color: #339933;">;</span>
        transition<span style="color: #339933;">:</span>0.2s opacity ease<span style="color: #339933;">-</span><span style="color: #000066; font-weight: bold;">in</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #339933;">&lt;/</span>style<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>head<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>body<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>script<span style="color: #339933;">&gt;</span>
    document.<span style="color: #660066;">body</span>.<span style="color: #660066;">className</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'tk-loading'</span><span style="color: #339933;">;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>
&nbsp;
...
&nbsp;
<span style="color: #339933;">&lt;</span>script<span style="color: #339933;">&gt;</span>
setTimeout<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    document.<span style="color: #660066;">body</span>.<span style="color: #660066;">className</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'tk-active'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
$LAB.<span style="color: #660066;">script</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'http://use.typekit.com/KIT_ID.js'</span><span style="color: #009900;">&#41;</span>
    .<span style="color: #660066;">wait</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">try</span><span style="color: #009900;">&#123;</span>
            Typekit.<span style="color: #660066;">load</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span><span style="color: #000066; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>body<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>html<span style="color: #339933;">&gt;</span></pre></div></div>

<h2>Limit the weights and variants</h2>
<p>By default a kit will contain all weights and variants of the fonts family. This can make the font download quite large (often in the region of 250KB+). Unchecking the flavours that aren't used can make a massive difference to download times.</p>
<p><figure><br />
<img src="/wp-content/uploads/2010/03/screen_cap6.png" alt="The Typekit Kit Editor"/><br />
<figcaption>Unchecking unused weights and variants will reduce the download time.</figcaption><br />
</figure></p>
<p>Hopefully someone will find this useful. I'm sure i'll be referring back to it the next time I use Typekit.</p>
]]></content:encoded>
			<wfw:commentRss>http://sweetnr.com/105/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Scrappy prototype slides</title>
		<link>http://sweetnr.com/100</link>
		<comments>http://sweetnr.com/100#comments</comments>
		<pubDate>Wed, 24 Mar 2010 19:33:37 +0000</pubDate>
		<dc:creator>carl</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[prototypes]]></category>
		<category><![CDATA[slides]]></category>

		<guid isPermaLink="false">http://sweetnr.com/?p=100</guid>
		<description><![CDATA[For posterity's sake here are the slides from my talk today on scrappy prototypes. They likely make no sense out of context.

<a href="/slides/scrappy-prototypes.pdf" type="application/pdf">Scrappy Prototypes (PDF)</a>]]></description>
			<content:encoded><![CDATA[<p>For posterity&#8217;s sake here are the slides from my talk today on scrappy prototypes. They likely make no sense out of context.</p>
<p><a href="/slides/scrappy-prototypes.pdf" type="application/pdf">Scrappy Prototypes (PDF)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://sweetnr.com/100/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Say hi to frontal</title>
		<link>http://sweetnr.com/70</link>
		<comments>http://sweetnr.com/70#comments</comments>
		<pubDate>Tue, 23 Mar 2010 21:05:36 +0000</pubDate>
		<dc:creator>carl</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[frontal]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://sweetnr.com/?p=70</guid>
		<description><![CDATA[On and off for the past few months i've been playing with an idea for a lightweight JavaScript framework. I hate to use the term 'framework' but i can't think of a better way to describe it. Perhaps this is a terrible approach to JavaScript development but it's been fun to experiment.]]></description>
			<content:encoded><![CDATA[<p>On and off for the past few months i&#8217;ve been playing with an idea for a lightweight JavaScript framework. I hate to use the term &#8216;framework&#8217; but i can&#8217;t think of a better way to describe it. Perhaps this is a terrible approach to JavaScript development but it&#8217;s been fun to experiment.</p>
<p>It&#8217;s built to complement the MVC pattern on the server side. Put simply it can be used to attach code to file and folder paths. Rather than try to explain in clumsy words, here&#8217;s some sample code:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript"><span style="color: #006600; font-style: italic;">/* SIMPLE RULE */</span>
$frn<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'/things'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">//Execute this for all paths starting with '/things'</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009966; font-style: italic;">/* MATCH ON TWO FOLDER LEVELS */</span>
$frn<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'/things/view'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">//Execute this for all paths starting with '/things/view'</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009966; font-style: italic;">/* NESTED MATCH */</span>
$frn<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'/things'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">//Execute this for all paths starting with '/things'</span>
&nbsp;
    $frn<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'/view'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">//Execute this for all paths starting with '/things/view'</span>
&nbsp;
  <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009966; font-style: italic;">/* MULTIPLE MATCHES */</span>
$frn<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'/stuff /things'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">//Execute this for all paths starting with '/stuff' or '/things'</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009966; font-style: italic;">/* RegExp MATCH */</span>
$frn<span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/.*\.js$/</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">//Execute this for all files with a '.js' extension.</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009966; font-style: italic;">/* MULTIPLE RULES */</span>
$frn<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span>
    <span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'/some'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
    <span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'/things'</span><span style="color: #339933;">,</span> functions<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#93;</span>
<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>The rules above will be executed immediately. This might not always be desirable. As such there&#8217;s a way to queue up rules and execute them later.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript">$frn.<span style="color: #660066;">queue</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'xhr'</span><span style="color: #009900;">&#41;</span>
    .<span style="color: #660066;">add</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/.*\.js$/</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">//Execute this later</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
    .<span style="color: #660066;">done</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
$frn.<span style="color: #660066;">dispatch</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'xhr'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>This could be useful for handling Ajaxy requests. <em>.dispatch()</em> could be fired inside a callback.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript">$<span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ajaxSuccess</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>r<span style="color: #339933;">,</span> xhr<span style="color: #339933;">,</span> s<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    $frn.<span style="color: #660066;">location</span><span style="color: #009900;">&#40;</span>s.<span style="color: #660066;">url</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">dispatch</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'xhr'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>As a convenience an arbitrary JavaScript object can be passed directly into the rule function. This could be useful for handling JSON.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript">$frn.<span style="color: #660066;">queue</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'json'</span><span style="color: #009900;">&#41;</span>
    .<span style="color: #660066;">add</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/.*\.json$/</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">//Yay! we got some JSON</span>
        <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>data.<span style="color: #660066;">prop</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
    .<span style="color: #660066;">done</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
$frn.<span style="color: #660066;">location</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'/getsome.json'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
$<span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ajaxSuccess</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>r<span style="color: #339933;">,</span> xhr<span style="color: #339933;">,</span> s<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    $frn.<span style="color: #660066;">location</span><span style="color: #009900;">&#40;</span>s.<span style="color: #660066;">url</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">data</span><span style="color: #009900;">&#40;</span>r.<span style="color: #660066;">responseText</span>.<span style="color: #660066;">parseJSON</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
        .<span style="color: #660066;">dispatch</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'json'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>It&#8217;s all up on <a href="http://github.com/carlmw/frontal">github</a>. Feedback is welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://sweetnr.com/70/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The southby experience.</title>
		<link>http://sweetnr.com/57</link>
		<comments>http://sweetnr.com/57#comments</comments>
		<pubDate>Wed, 17 Mar 2010 18:09:50 +0000</pubDate>
		<dc:creator>carl</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[sxsw]]></category>

		<guid isPermaLink="false">http://sweetnr.com/?p=57</guid>
		<description><![CDATA[I'm sitting by my gate ready to fly home from Austin after one absolutely fantastic week at <a href="http://sxsw.com/interactive">SXSWi</a>. Coming out here i wasn't sure what to expect.

<h3>Geek Camp</h3>
I've been to a whole <a href="http://atmedia.webdirections.org/">slew</a> of <a href="http://2009.dconstruct.org/">conferences</a> in the past. But this was an experience like no other. So much so that it's prompted me to write my first blog post for months (curse you <a href="http://twitter.com/carlmw" rel="me">twitter</a>!). ]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m sitting by my gate ready to fly home from Austin after one absolutely fantastic week at <a href="http://sxsw.com/interactive">SXSWi</a>. Coming out here i wasn&#8217;t sure what to expect.</p>
<h3>Geek Camp</h3>
<p>I&#8217;ve been to a whole <a href="http://atmedia.webdirections.org/">slew</a> of <a href="http://2009.dconstruct.org/">conferences</a> in the past. But this was an experience like no other. So much so that it&#8217;s prompted me to write my first blog post for months (curse you <a href="http://twitter.com/carlmw" rel="me">twitter</a>!). </p>
<p>On the first day i popped into <a href="http://my.sxsw.com/events/event/861">How to Rawk SXSW</a> where <a href="http://minjungkim.com">Min Jung Kim</a>, <a href="http://benhuh.com/" rel="met">Ben Huh (the cheezburger guy)</a>; <a href="http://denisejacobs.com">Denise Jacobs</a> and <a href="http://adactio.com" rel="met">Jeremy Keith</a> tried to prepare us southby n00bs for the week ahead. They explained that it wasn&#8217;t just about the panels — to which i was a little sceptical — and that it was a good thing to miss a few;  concentrating on &#8220;only one or two must sees&#8221;. This was great advice; it mean&#8217;t there was no need to be rushing to panels and gave you ample opportunity to mingle. The random conversations i struck up with strangers in the convention centre corridors formed some of the highlights of the whole experience for me.</p>
<p>The parties are a huge part of the southby experience. Every night there were no less than five parties sponsored by the latest start-ups vying for your attention (or location). Enticed by free alcohol and t-shirts we queued around the block to get inside. Once inside we&#8217;d head straight for the heaving bar, where we&#8217;d snag a few scoops of <a href="http://www.shiner.com/" rel="drank">Shiner Bock</a> the local beer of choice (It&#8217;s really good). Beer in hand you&#8217;d try to find someone to talk to. This was the source of some great conversation and connections. Sooner or later you find yourself on a crawl with a group of total strangers from <a href="http://greenpeace.org/">Greenpeace</a>, and being scolded for buying a <a href="http://www.greenpeace.org/international/campaigns/climate-change/kitkat">KitKat</a> earlier in the day. This process repeated nightly (though not with Greenpeace each night; those guys can drink!), resulting in the perpetual hang over i&#8217;ve yet to fully recover from. Despite all the drinking i managed (to my credit) to make it to the 9:30 sessions <strong>every</strong> morning.</p>
<p>At southby, I learn&#8217;t how to not be British (though Texans love the accent!). </p>
<p>I&#8217;ll be back next year; that&#8217;s a given. </p>
<p>I&#8217;m going to write up my notes over the next day or two and should hopefully have some more technical posts to deliver. </p>
]]></content:encoded>
			<wfw:commentRss>http://sweetnr.com/57/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tweet like a Pirate!</title>
		<link>http://sweetnr.com/44</link>
		<comments>http://sweetnr.com/44#comments</comments>
		<pubDate>Thu, 17 Sep 2009 19:47:35 +0000</pubDate>
		<dc:creator>carl</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bookmarklet]]></category>

		<guid isPermaLink="false">http://sweetnr.com/?p=44</guid>
		<description><![CDATA[Its International Talk Like a Pirate Day tomorrow (September 19th) so to celebrate here&#8217;s a quick bookmarklet I put together.
Built on top of the awesome Talk like a Pirate translation ARRPI.
Drag the following link to your bookmarks and enjoy: TweetARRR!
]]></description>
			<content:encoded><![CDATA[<p>Its <a href="http://www.talklikeapirate.com/">International Talk Like a Pirate Day</a> tomorrow (September 19th) so to celebrate here&#8217;s a quick bookmarklet I put together.</p>
<p>Built on top of the awesome <a href="http://isithackday.com/arrpi.php">Talk like a Pirate translation ARRPI</a>.</p>
<p>Drag the following link to your bookmarks and enjoy: <a href="javascript:javascript:var y=function(j){if(j){window.location.href='http://twitter.com?status='+escape(j.translation.pirate);return;}var m=prompt('Enter ye tweet');if(m){var s=document.createElement('script');s.src='http://isithackday.com/arrpi.php?text='+escape(m)+'&#038;format=json&#038;callback=y';document.body.appendChild(s);}};y();">TweetARRR!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://sweetnr.com/44/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5 primer</title>
		<link>http://sweetnr.com/40</link>
		<comments>http://sweetnr.com/40#comments</comments>
		<pubDate>Wed, 09 Sep 2009 21:37:19 +0000</pubDate>
		<dc:creator>carl</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[slides]]></category>

		<guid isPermaLink="false">http://sweetnr.com/?p=40</guid>
		<description><![CDATA[Today i had the joy of presenting a run down of the exciting new features in HTML5 to the entire team.
Here are the slides in a PDF html5-primer.pdf.
]]></description>
			<content:encoded><![CDATA[<p>Today i had the joy of presenting a run down of the exciting new features in HTML5 to the entire team.</p>
<p>Here are the slides in a PDF <a href="/slides/html5-primer.pdf" type="application/pdf">html5-primer.pdf</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sweetnr.com/40/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>People cards</title>
		<link>http://sweetnr.com/29</link>
		<comments>http://sweetnr.com/29#comments</comments>
		<pubDate>Sat, 04 Jul 2009 21:04:54 +0000</pubDate>
		<dc:creator>carl</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[mashup]]></category>
		<category><![CDATA[printing]]></category>

		<guid isPermaLink="false">http://sweetnr.com/?p=29</guid>
		<description><![CDATA[&#8220;People cards&#8221; is a little side project I&#8217;m working on at the moment. Essentially they&#8217;re MOO mini cards with the URL&#8217;s of your social networking profiles printed on them.
The idea being that you can give them people you meet while you&#8217;re out and about, at meetups, conferences etc. 
I&#8217;m using the Twitter API (using OAuth) [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;People cards&#8221; is a little side project I&#8217;m working on at the moment. Essentially they&#8217;re <a href="http://moo.com">MOO</a> mini cards with the URL&#8217;s of your social networking profiles printed on them.</p>
<p>The idea being that you can give them people you meet while you&#8217;re out and about, at meetups, conferences etc. </p>
<p>I&#8217;m using the <a href="http://apiwiki.twitter.com">Twitter API</a> (using OAuth) and <a href="http://code.google.com/apis/socialgraph/">Google&#8217;s Social Graph API</a> to fetch related profiles on sites that support FOAF and XFN.</p>
<p>Once I&#8217;ve gathered all the user data i need i make a request to the MOO API and then push the user onto the MOO customiser and checkout.</p>
<p>Just need to add a design then i can put this baby live.</p>
]]></content:encoded>
			<wfw:commentRss>http://sweetnr.com/29/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
