<?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/"
	xmlns:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>Andy Blackwell &#187; Web</title>
	<atom:link href="http://www.andyblackwell.com/topic/web/feed" rel="self" type="application/rss+xml" />
	<link>http://www.andyblackwell.com</link>
	<description></description>
	<lastBuildDate>Wed, 26 May 2010 15:17:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Google Fonts API: Asychronously</title>
		<link>http://www.andyblackwell.com/google-fonts-api-asych-198</link>
		<comments>http://www.andyblackwell.com/google-fonts-api-asych-198#comments</comments>
		<pubDate>Wed, 26 May 2010 13:00:51 +0000</pubDate>
		<dc:creator>andyblackwell</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.andyblackwell.com/?p=198</guid>
		<description><![CDATA[When Google Fonts came out last week I got really excited (even IE6 is supported!), but it brought up an old problem I&#8217;ve had with including code hosted by Google (or anyone else) in a site. Whenever the files host goes down, your sites load time can become lengthy, causing you to lose potential visitors. [...]]]></description>
			<content:encoded><![CDATA[<p>When <a href="http://code.google.com/apis/webfonts/">Google Fonts</a> came out last week I got really excited (even IE6 is supported!), but it brought up an old problem I&#8217;ve had with including code hosted by Google (or anyone else) in a site. Whenever the files host goes down, your sites load time can become lengthy, causing you to lose potential visitors. It&#8217;s happened a few times in the last couple months when Google services were down in our area (Search/Code/APIs), which caused a lot of our sites to &#8216;hang&#8217; while loading because they were trying to download something that wasn&#8217;t available.</p>
<p>So I decided to implement these wonderful new fonts in a fail safe way where no site would fall victim to being crippled if/when the files were unreachable. Below are my cross-browser ways of doing just that, whether you would like to use the javascript loading method (example #1), or point directly to the css file (example #2).</p>
<p>The <a href="http://code.google.com/apis/webfonts/docs/webfont_loader.html#Example">Google Fonts javascript loader method</a> is nice because it gives you some css classes to use once the fonts have loaded, giving you more control over what your site looks like with or without the &#8216;fancy&#8217; fonts, rather than merely relying on a font stack in the css to do that job.</p>
<pre class="brush: jscript; title: ; notranslate">
(function() {
	var loaded = false;
	var script = document.createElement('script');
	script.type = 'text/javascript';
	script.src = 'http://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
	script.onload = script.onreadystatechange = function() {
		if ( !loaded &amp;&amp; (!this.readyState || this.readyState === &quot;loaded&quot; || this.readyState === &quot;complete&quot;) ) {
			loaded = true;
			// Handle memory leak - IE
			script.onload = script.onreadystatechange = null;
			// check before using - IE6
			if(window['WebFont']){

				// Put your WebFont calls here
				WebFont.load({
					google: {
						families: [ 'Yanone Kaffeesatz', 'Vollkorn' ]
					}
				});

			}
		}
	};
	var s = document.getElementsByTagName('script')[0];
	s.parentNode.insertBefore(script, s);
})();
</pre>
<pre class="brush: jscript; title: ; notranslate">
(function() {
	var head = document.getElementsByTagName(&quot;head&quot;)[0] || document.documentElement;
	var link = document.createElement('link');
	link.type = 'text/css';
	link.rel = 'stylesheet';
	// enter the Google Fonts css url here
	link.href = 'http://fonts.googleapis.com/css?family=Yanone+Kaffeesatz|Vollkorn';
	head.insertBefore( link, head.firstChild );
})();
</pre>
<p>Both can be placed in the head or foot of your page, although I recommend placing the snippet in the head so the file(s) will begin downloading as soon as possible.</p>
<p>Did you find this helpful, or have ideas to make it better? Let me know in the comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andyblackwell.com/google-fonts-api-asych-198/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe Creative Suite 5 launches today!</title>
		<link>http://www.andyblackwell.com/adobe-creative-suite-5-launches-today-171</link>
		<comments>http://www.andyblackwell.com/adobe-creative-suite-5-launches-today-171#comments</comments>
		<pubDate>Mon, 12 Apr 2010 05:15:47 +0000</pubDate>
		<dc:creator>andyblackwell</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.andyblackwell.com/?p=171</guid>
		<description><![CDATA[Excuse me while I geek out over Adobe’s mind-blowing upgrades to their Creative Suite. It’s almost too much awesome to take in. (Content-Aware Fill, Puppet Warp, Vector Bristle Brushes, Vector Perspective Drawing...w00t!)]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Excuse me while I geek out over Adobe&#8217;s mind-blowing upgrades to their Creative Suite. It&#8217;s <em>almost </em>too much awesome to take in.</p>
<p style="text-align: center;">Photoshop&#8217;s new Content-Aware Fill is the auto-drool feature:<br />
<object id="neroli_swf1" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="620" height="340" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="salign" value="tl" /><param name="scale" value="noscale" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="wmode" value="opaque" /><param name="flashvars" value="baseURL=http://wwwimages.adobe.com/www.adobe.com&amp;locale=en_us&amp;overlay=false&amp;npObjID=8&amp;config=http://wwwimages.adobe.com/www.adobe.com/products/photoshop/photoshopextended/features/include/content-aware-fill/neroliconfig.xml&amp;chapterID=0&amp;configListID=0" /><param name="src" value="http://wwwimages.adobe.com/www.adobe.com/multimedia/en/swf/shared/video/hestia/neroli/neroliplayer_18.swf" /><param name="allowfullscreen" value="true" /><embed id="neroli_swf1" type="application/x-shockwave-flash" width="620" height="340" src="http://wwwimages.adobe.com/www.adobe.com/multimedia/en/swf/shared/video/hestia/neroli/neroliplayer_18.swf" flashvars="baseURL=http://wwwimages.adobe.com/www.adobe.com&amp;locale=en_us&amp;overlay=false&amp;npObjID=8&amp;config=http://wwwimages.adobe.com/www.adobe.com/products/photoshop/photoshopextended/features/include/content-aware-fill/neroliconfig.xml&amp;chapterID=0&amp;configListID=0" wmode="opaque" allowscriptaccess="always" allowfullscreen="true" scale="noscale" salign="tl"></embed></object></p>
<p style="text-align: center;">And Puppet Warp is blowing my mind:<br />
<object id="neroli_swf2" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="620" height="340" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="salign" value="tl" /><param name="scale" value="noscale" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="wmode" value="opaque" /><param name="flashvars" value="baseURL=http://wwwimages.adobe.com/www.adobe.com&amp;locale=en_us&amp;overlay=false&amp;npObjID=29&amp;config=http://wwwimages.adobe.com/www.adobe.com/products/photoshop/photoshopextended/features/include/puppet-warp/neroliconfig.xml&amp;chapterID=0&amp;configListID=0" /><param name="src" value="http://wwwimages.adobe.com/www.adobe.com/multimedia/en/swf/shared/video/hestia/neroli/neroliplayer_18.swf" /><param name="allowfullscreen" value="true" /><embed id="neroli_swf2" type="application/x-shockwave-flash" width="620" height="340" src="http://wwwimages.adobe.com/www.adobe.com/multimedia/en/swf/shared/video/hestia/neroli/neroliplayer_18.swf" flashvars="baseURL=http://wwwimages.adobe.com/www.adobe.com&amp;locale=en_us&amp;overlay=false&amp;npObjID=29&amp;config=http://wwwimages.adobe.com/www.adobe.com/products/photoshop/photoshopextended/features/include/puppet-warp/neroliconfig.xml&amp;chapterID=0&amp;configListID=0" wmode="opaque" allowscriptaccess="always" allowfullscreen="true" scale="noscale" salign="tl"></embed></object></p>
<p style="text-align: center;">Illustrator strokes mimicking brushes are awesome:<br />
<object id="neroli_swf3" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="360" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="salign" value="tl" /><param name="scale" value="noscale" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="wmode" value="opaque" /><param name="flashvars" value="baseURL=http://wwwimages.adobe.com/www.adobe.com&amp;locale=en_us&amp;overlay=false&amp;npObjID=7&amp;config=http://wwwimages.adobe.com/www.adobe.com/products/illustrator/features/include/bristle-brush-whats-new/neroliconfig.xml" /><param name="src" value="http://wwwimages.adobe.com/www.adobe.com/multimedia/en/swf/shared/video/hestia/neroli/neroliplayer_18.swf" /><param name="allowfullscreen" value="true" /><embed id="neroli_swf3" type="application/x-shockwave-flash" width="640" height="360" src="http://wwwimages.adobe.com/www.adobe.com/multimedia/en/swf/shared/video/hestia/neroli/neroliplayer_18.swf" flashvars="baseURL=http://wwwimages.adobe.com/www.adobe.com&amp;locale=en_us&amp;overlay=false&amp;npObjID=7&amp;config=http://wwwimages.adobe.com/www.adobe.com/products/illustrator/features/include/bristle-brush-whats-new/neroliconfig.xml" wmode="opaque" allowscriptaccess="always" allowfullscreen="true" scale="noscale" salign="tl"></embed></object></p>
<p style="text-align: center;">And Vector drawing in perspective is sweet:<br />
<object id="neroli_swf4" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="360" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="salign" value="tl" /><param name="scale" value="noscale" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="wmode" value="opaque" /><param name="flashvars" value="baseURL=http://wwwimages.adobe.com/www.adobe.com&amp;locale=en_us&amp;overlay=false&amp;npObjID=17&amp;config=http://wwwimages.adobe.com/www.adobe.com/products/illustrator/features/include/perspective-drawing-whats-new/neroliconfig.xml" /><param name="src" value="http://wwwimages.adobe.com/www.adobe.com/multimedia/en/swf/shared/video/hestia/neroli/neroliplayer_18.swf" /><param name="allowfullscreen" value="true" /><embed id="neroli_swf4" type="application/x-shockwave-flash" width="640" height="360" src="http://wwwimages.adobe.com/www.adobe.com/multimedia/en/swf/shared/video/hestia/neroli/neroliplayer_18.swf" flashvars="baseURL=http://wwwimages.adobe.com/www.adobe.com&amp;locale=en_us&amp;overlay=false&amp;npObjID=17&amp;config=http://wwwimages.adobe.com/www.adobe.com/products/illustrator/features/include/perspective-drawing-whats-new/neroliconfig.xml" wmode="opaque" allowscriptaccess="always" allowfullscreen="true" scale="noscale" salign="tl"></embed></object></p>
<p style="text-align: left;">Head over to <a href="http://www.adobe.com/products/photoshop/photoshopextended/" target="_blank">Adobe</a> to see the <a href="http://www.adobe.com/products/illustrator/whatsnew/" target="_blank">other cool features</a> <a href="http://www.adobe.com/products/dreamweaver/" target="_blank">they&#8217;ve cooked up</a>, or look for the tutorial videos this week from <a href="http://www.photoshopuser.com/" target="_blank">PhotoshopUser.com</a> at their <a href="http://www.photoshopuser.com/cs5" target="_blank">Photoshop CS5 Learning Center</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andyblackwell.com/adobe-creative-suite-5-launches-today-171/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Theme Organization Library</title>
		<link>http://www.andyblackwell.com/wordpress-theme-organization-library-141</link>
		<comments>http://www.andyblackwell.com/wordpress-theme-organization-library-141#comments</comments>
		<pubDate>Sun, 04 Apr 2010 20:26:46 +0000</pubDate>
		<dc:creator>andyblackwell</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.andyblackwell.com/?p=141</guid>
		<description><![CDATA[I&#8217;ve developed a small, flexible library to help WordPress theme developers organize their theme files however they like. I came to the conclusion that all the theme frameworks I had used in the past were overkill for my needs, and personally don&#8217;t like the idea of parent/child themes. So I created a simple library that [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve developed a small, flexible library to help WordPress theme developers organize their theme files however they like. I came to the conclusion that all the theme frameworks I had used in the past were overkill for my needs, and personally don&#8217;t like the idea of parent/child themes. So I created a simple library that would help in organizing themes with numerous files, which was my primary need. But I also wanted to promote OOP over functional coding where possible as well.</p>
<p>I currently use the library on this site (tentatively named <em>&#8216;Themeo&#8217;</em>) and will release an open source version once I&#8217;ve tweaked the code for easy configuration. The basic use will be to extend the library, creating a theme-specific class that will encapsulate your theme code.</p>
<pre class="brush: php; title: ; notranslate">class MyTheme extends Themeo {

	static public function get_header($file='header'){
		wp_deregister_script('jquery');
		wp_register_script('jquery', (&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js&quot;), false, '1.4');
		wp_register_script('app', Themeo::get_template_url() . &quot;js/app.js&quot;, array('jquery'), '1.0');
		wp_enqueue_script('jquery');
		wp_enqueue_script('app');
		self::get_template_file('header/' . $file . '.php');
	}

	static public function get_sidebar($file='sidebar'){
		self::get_template_file('sidebar/' . $file . '.php');
	}

	static public function get_footer($file='footer'){
		self::get_template_file('footer/' . $file . '.php');
	}

}</pre>
<p>And then calling your custom class in your theme&#8217;s files.</p>
<pre class="brush: php; html-script: true; title: ; notranslate">&lt;?php MyTheme::get_header(); ?&gt;

&lt;?php if (have_posts()) : ?&gt;
	&lt;div class=&quot;posts&quot;&gt;
	&lt;?php while (have_posts()) : the_post(); ?&gt;

		&lt;?php MyTheme::get_template_file('post/loop-item-teaser'); ?&gt;

	&lt;?php endwhile; ?&gt;
	&lt;/div&gt;&lt;!-- .posts --&gt;

	&lt;div class=&quot;navigation&quot;&gt;
		&lt;?php next_posts_link('&amp;laquo; Older Entries'); ?&gt;
		&lt;?php previous_posts_link('Newer Entries &amp;raquo;'); ?&gt;
	&lt;/div&gt;
&lt;?php endif; ?&gt;

&lt;?php MyTheme::get_footer(); ?&gt;</pre>
<p>This is a very simple example of how it could be used. More information to come as I get closer to releasing it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andyblackwell.com/wordpress-theme-organization-library-141/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced (User agent is rejected)

Served from: www.andyblackwell.com @ 2013-05-23 23:19:27 -->