<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">

    <title type="text">Blog</title>
    <subtitle type="text">Blog:</subtitle>
    <link rel="alternate" type="text/html" href="http://johndwells.com/index.php/blog/index/" />
    <link rel="self" type="application/atom+xml" href="http://johndwells.com/site/atom" />
    <updated>2010-09-01T16:41:53Z</updated>
    <rights>Copyright (c) 2010, JohnDWells</rights>
    <generator uri="http://expressionengine.com/" version="2.1.0">ExpressionEngine</generator>
    <id>tag:johndwells.com,2010:09:01</id>


    <entry>
      <title>All Project Management Software Sucks</title>
      <link rel="alternate" type="text/html" href="http://johndwells.com/site/all-project-management-software-sucks" />
      <id>tag:johndwells.com,2010:index.php/blog/index/3.31</id>
      <published>2010-09-01T22:23:51Z</published>
      <updated>2010-09-01T16:41:53Z</updated>
      <author>
            <name>JohnDWells</name>
            <email>webmaster@johndwells.com</email>
                  </author>

      <content type="html"><![CDATA[
        <p>Every 6-8 months or so, I waste a solid afternoon researching project management software.&nbsp; My perusal usually begins at <a href="http://basecamphq.com" title="Basecamp">Basecamp</a>, and then usually I google &#8220;<a href="http://www.google.ca/search?sourceid=chrome&amp;ie=UTF-8&amp;q=basecamp+alternatives" title="Google 'basecamp alternatives'">basecamp alternatives</a>&#8221; and begin following the breadcrumb trail.&nbsp; I  And at the end of my journey, I always do the same thing: close down my browser tabs and get back to work, none the wiser or richer for my time.
</p> <p>What am I looking for?&nbsp; I&#8217;m looking for software that knows how the real world works: the world wherein clients change their minds, employees get sick and go on holiday, and projects suddenly appear requiring all-hands-on-deck for the next 72 hours.&nbsp; I&#8217;m looking for software that can accurately tell me, &#8220;can we take on this project without affecting any other ongoing jobs?&#8221;&nbsp; I&#8217;m looking for software that understands that nothing ever goes according to plan.</p>

<p><strong>Frankly, we fly by the seat of our pants and tend to make shit up as we go along.</strong> That&#8217;s what I need this software to understand.</p>

<p><em>It&#8217;s perhaps worth qualifying my complaint by acknowledging that ours might be an industry-specific problem.</em> We are a small team of designers and developers, working closely with our clients to develop brands and build websites.&nbsp; We offer a very personal level of service, where our clients talk to everyone on the team, and we each take turns running projects.&nbsp; We have a mix of long-term and short-term projects that run side-by-side.&nbsp; I suppose we&#8217;re &#8220;agile&#8221; in our working ways, but we are frankly too busy to apply a fixed methodology and label our work process.</p>

<p>Thing is, I think I have an idea on what this software might look like.&nbsp; I&#8217;ve had a bit of an ah-hah moment and I can&#8217;t seem to get it out of my head.&nbsp; What I have also </p>


      ]]></content>
    </entry>

    <entry>
      <title>Pedantic As Fuck: Coding Guidelines</title>
      <link rel="alternate" type="text/html" href="http://johndwells.com/site/pedantic-as-fuck-coding-guidelines" />
      <id>tag:johndwells.com,2010:index.php/blog/index/3.29</id>
      <published>2010-02-07T18:51:13Z</published>
      <updated>2010-02-07T10:02:14Z</updated>
      <author>
            <name>JohnDWells</name>
            <email>webmaster@johndwells.com</email>
                  </author>

      <content type="html"><![CDATA[
        <h2>
	Folder Structure:</h2>
<p>
	To support EE integration, all template assets (css, images, scripts etc) should be nested within an encompassing &ldquo;style&rdquo; folder; then subfolders are used to separate asset type:</p>
<pre>
/style/
        /css
        /images
        /scripts
        /flash
</pre>
<h2>
	Image Filename Prefixes:</h2>
<p>
	To help organize a cluttered image directory, I use 6 different prefixes to group files into their usage. These should cover 99% of any possible scenario. The only trick is to know when one prefix should be chosen in lieu of another. These are therefore arranged in a &ldquo;cascade&rdquo;:</p>
<ol>
	<li>
		sprite_* - any sprite graphics</li>
	<li>
		btn_* - any button graphics (e.g. submit buttons, etc)</li>
	<li>
		icon_* - any icon graphics (e.g. arrows, bullets, etc)</li>
	<li>
		logo_* - any logos</li>
	<li>
		bg_* - a graphic that is used as a background image via CSS</li>
	<li>
		img_* - any images included via the <pre>&lt;img /&gt;</pre> tag</li>
</ol>
<p>
	The cascade works by starting at the top, see if the image qualifies for that prefix; if so, use it, if not, continue to next prefix.</p>
<p>
	If multiple prefixes match, use them in sequence of the cascade. The exception is &ldquo;bg_*&rdquo;, which is implied if any higher prefix is used.</p>
<p>
	Example:<br />
	<br />
	A submit button &ldquo;<pre>&lt;button&gt;Submit Me!&lt;/button&gt;</pre>&rdquo; uses a background image to override the browser&rsquo;s default look. The design calls for 3 states: off, on, and active. The image should be created as a sprite to reduce server requests. Following the cascade, it qualifies as a sprite and button. Therefore it&rsquo;s name might be: <em>sprite_btn_submit.gif</em></p>
<h2>
	Miscellaneous</h2>
<p>
	Main/global stylesheet should be named &ldquo;screen.css&rdquo;</p>
<p>
	Filenames are all lowercase, words separated by underscores only (e.g. logo_google.png).</p>
<p>
	Filenames should be verbose for clarity</p>
<p>
	You are encouraged to separate CSS as much as is necessary to keep things organised</p>
<p>
	You are encouraged to go comment-crazy in CSS &amp; JS</p>
<p>
	Use HTML comments to indicate the closing of any structural divs (or spans were helpful):<br />
	- If the div has an ID value, use &ldquo;<!-- /#id_value_here -->&rdquo;<br />
	Example:</p>
<pre>
</pre>
<div id="wrapper"><p>
	</p><pre>
	.......
</pre>
</div><p>
<!-- /#wrapper --></p><p>
	- If the div has a CLASS value, use &ldquo;<!-- /.class_value_here -->&rdquo; Example:</p>
<pre>
</pre>
<div class="widget"><p>
	</p><pre>
	.......
</pre>
</div><p>
<!-- /.widget --></p><p>
	Use Google&rsquo;s CDN for js libraries (e.g. jquery)</p>
<p>
	Use most current jquery (1.4.1 as of this writing: http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js)</p>
<p>
	When referencing asset files from within the HTML source, use absolute linking (e.g. &ldquo;/style/css/screen.css&rdquo;). Assets linked from within CSS can be relative (e.g. &ldquo;../images/sprite_navigation.gif&rdquo;).</p>
<p>
	Preferred doctype: xhtml 1.0 transitional</p>
<p>
	IE6/7, PNG support: Up to you!</p>

<p>&nbsp;</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Should I pay for that beta?</title>
      <link rel="alternate" type="text/html" href="http://johndwells.com/site/should-i-pay-for-that-beta" />
      <id>tag:johndwells.com,2010:index.php/blog/index/3.28</id>
      <published>2010-01-07T03:53:58Z</published>
      <updated>2010-01-06T18:54:59Z</updated>
      <author>
            <name>JohnDWells</name>
            <email>webmaster@johndwells.com</email>
                  </author>

      <category term="Business"
        scheme="http://johndwells.com/site/C10"
        label="Business" />
      <category term="ExpressionEngine"
        scheme="http://johndwells.com/site/C1"
        label="ExpressionEngine" />
      <content type="html"><![CDATA[
        <p>Last week I fired off a tweet about Solspace, a web development company that contributes heavily to the space of ExpressionEngine add-ons.&nbsp; I challenged their business model of charging a fee for their &#8220;beta&#8221; modules, which quickly drew a response from their lead developer.&nbsp; We exchanged a few tweets, but it left me frustrated; Twitter isn&#8217;t always the best medium for a debate, especially between two strangers. Or perhaps I&#8217;m simply not articulate enough to say everything in 140 characters.</p>

<p>Let&#8217;s see what kicked this off.&nbsp; On Nov 24th I twittered:</p>

<blockquote><p>@johndwells EE was released this way. EE 2.0&#8217;s release is effectively a public beta. And any non-beta update is free, so I see no problem.</p></blockquote>

<p>My first reply was from another EE community member, who said she&#8217;s known the two behind Solspace for years, has used one of their stable pay-for modules for years, and contended it was still a good deal.</p>

<p>Then Solspace&#8217;s lead developer Paul Burdick got back to me, aligning their business model directly with ExpressionEngine&#8217;s, by saying that EE&#8217;s 2.0 release, which is pay-for (and includes a price increase) is effectively a beta release.&nbsp; Two days later, serendipitously for Paul&#8217;s arguement, EllisLab announced they were renaming the December 1 release of EE 2.0, from &#8220;release candidate&#8221; to &#8220;public beta&#8221;. Ah.</p>

<p>But let me just clarify my case: for first-time customers, paying for a beta release is off-putting.&nbsp; I will be purchasing 1 freelancer&#8217;s license of EE 2.0 for myself, because I know and trust EE and I also want to be a part of the community that makes EE 2.0 great; but I won&#8217;t be purchasing it for my clients.&nbsp; I&#8217;m willing to invest $99 in EE 2.0 because I know and trust EE 1.6.8.</p>

<p>With Solspace, let&#8217;s consider their recently released Super Search 1.0.0 Beta module.&nbsp; EE has long needed a better solution to search.&nbsp; Right now I&#8217;m quoting for a job that heavily relies on an intelligent search engine
</p> <p>
	&nbsp;</p>
<div style="font-family: Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); ">
	<p>
		<span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: Times; font-size: medium; ">@reedmaniac Thanks for feeding back. I understand what you&#39;re saying. And I don&#39;t mean to slight you guys! Hell, freeform alone is worth ... @reedmaniac Thanks for humoring me on this. Interesting debate - I see your point. Perhaps I can dig up $$ to play in the beta sandbox. <img src="http://johndwells.com/images/smileys/wink.gif" width="19" height="19" alt="wink" style="border:0;" /></span></p>
</div>

      ]]></content>
    </entry>

    <entry>
      <title>Tips to improve your clients&#8217; experience using ExpressionEngine</title>
      <link rel="alternate" type="text/html" href="http://johndwells.com/site/tips-to-improve-your-clients-experience-using-expressionengine" />
      <id>tag:johndwells.com,2009:index.php/blog/index/3.27</id>
      <published>2009-12-28T16:26:14Z</published>
      <updated>2010-01-02T06:44:16Z</updated>
      <author>
            <name>JohnDWells</name>
            <email>webmaster@johndwells.com</email>
                  </author>

      <category term="ExpressionEngine"
        scheme="http://johndwells.com/site/C1"
        label="ExpressionEngine" />
      <content type="html"><![CDATA[
        <p>When I switched from Wordpress to ExpressionEngine, there were a many reasons behind the move.&nbsp; Custom fields, absurdly simple templating system, .
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Code Every Day: Day 1</title>
      <link rel="alternate" type="text/html" href="http://johndwells.com/site/code-every-day-day-1" />
      <id>tag:johndwells.com,2009:index.php/blog/index/3.26</id>
      <published>2009-12-28T16:24:28Z</published>
      <updated>2009-12-29T07:50:29Z</updated>
      <author>
            <name>JohnDWells</name>
            <email>webmaster@johndwells.com</email>
                  </author>

      <category term="Programming"
        scheme="http://johndwells.com/site/C9"
        label="Programming" />
      <content type="html"><![CDATA[
        <div class="codeblock"><code><span style="color: #000000">
<span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">activate_extension</span><span style="color: #007700">()<br /></span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">global&nbsp;</span><span style="color: #0000BB">$DB</span><span style="color: #007700">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$hooks&nbsp;</span><span style="color: #007700">=&nbsp;array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'lg_addon_update_register_source'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'lg_addon_update_register_source'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">,</span><span style="color: #DD0000">'lg_addon_update_register_addon'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'lg_addon_update_register_addon'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">,</span><span style="color: #DD0000">'edit_entries_additional_tableheader'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'edit_entries_additional_tableheader'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">,</span><span style="color: #DD0000">'edit_entries_modify_tableheader'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'edit_entries_modify_tableheader'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">,</span><span style="color: #DD0000">'edit_entries_additional_celldata'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'edit_entries_additional_celldata'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">,</span><span style="color: #DD0000">'edit_entries_modify_tablerow'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'edit_entries_modify_tablerow'<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(</span><span style="color: #0000BB">$hooks&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">$hook&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$method</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sql&#91;&#93;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$DB</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">insert_string</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">db_prefix&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'_extensions'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'extension_id'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'class'&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">Seesaw_extension_class</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'method'&nbsp;&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$method</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'hook'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&gt;</span><span style="color: #0000BB">$hook</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'settings'&nbsp;&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'priority'&nbsp;&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">10</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'version'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">version</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'enabled'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">"y"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;run&nbsp;all&nbsp;sql&nbsp;queries<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">foreach&nbsp;(</span><span style="color: #0000BB">$sql&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">$query</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$DB</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">query</span><span style="color: #007700">(</span><span style="color: #0000BB">$query</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;Set&nbsp;up&nbsp;&amp;&nbsp;save&nbsp;default&nbsp;settings<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$default_settings&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_merge_settings</span><span style="color: #007700">(array());<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_save_settings</span><span style="color: #007700">(</span><span style="color: #0000BB">$default_settings</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">TRUE</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">&#125;&nbsp;</span>
</span>
</code></div>

<p>This is the code example.
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Preload Images with jQuery</title>
      <link rel="alternate" type="text/html" href="http://johndwells.com/site/preload-images-with-jquery" />
      <id>tag:johndwells.com,2009:index.php/blog/index/3.19</id>
      <published>2009-11-04T17:07:57Z</published>
      <updated>2009-11-06T15:25:58Z</updated>
      <author>
            <name>JohnDWells</name>
            <email>webmaster@johndwells.com</email>
                  </author>

      <content type="html"><![CDATA[
        <p>There are obviously a gazillion ways to skin this cat, so let&#8217;s keep it simple and define a basuc scenario:</p>

<blockquote><p>I have a very large image (400kb) set as the background of my site. I&#8217;d like to show a &#8220;loading&#8221; animated graphic that displays until the large image is available, and then show the large graphic instead.</p></blockquote>

<h2>What We Need</h2>

<ol>
<li>The latest and greatest jQuery (I like to link to a <a href="http://code.google.com/apis/ajaxlibs/documentation/index.html#jquery" title="jQuery hosted by Google">Google-hosted</a> copy)</li>
<li>An animated gif (either create your own or generate one with <a href="http://www.ajaxload.info/" title="Ajaxload">Ajaxload</a></li>
<li>A big ol&#8217; image </li>
</ol>

<p>[code lang=&#8220;javascript&#8221;]$(document).ready(function() {<br />
	var imgSrc = "{image}&#8221;;<br />
	var img = new Image();<br />
	$(img)<br />
		// once the image has loaded, execute this code<br />
		.load(function () {<br />
			$('body').css("background-image", "url(" + $(this).attr('src') + ")").css("background-position", "top left");<br />
		})<br />
		// if there was an error loading the image, react accordingly<br />
		.error(function () {<br />
			alert('error');<br />
		})<br />
		<br />
		// *finally*, set the src attribute of the new image to our image<br />
		.attr(&#8216;src&#8217;, imgSrc);<br />
});</code>
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>120,000 New Blogs Created Worldwide Each Day *</title>
      <link rel="alternate" type="text/html" href="http://johndwells.com/site/120000-new-blogs-created-worldwide-each-day" />
      <id>tag:johndwells.com,2009:index.php/blog/index/3.7</id>
      <published>2009-10-15T20:17:54Z</published>
      <updated>2009-10-15T13:42:56Z</updated>
      <author>
            <name>JohnDWells</name>
            <email>webmaster@johndwells.com</email>
                  </author>

      <content type="html"><![CDATA[
        <p>
	The past 48 hours have been a flurry of creative activity.&nbsp; For months, possibly even years, I&#39;ve been pining and aching to revive my personal/professional website.&nbsp; I&#39;ve enlisted friends to help.&nbsp; I&#39;ve created a brief.&nbsp; I&#39;ve launched a number of holding pages in between. And then two nights ago, struck violently with inspiration, I toiled from <em>sundown to sunup</em>, playing and tweaking refreshing, until I had myself a new site.</p>
<p>
	On the surface, it may actually appear that little&#39;s changed; the homepage still amounts to a holding page.&nbsp; And it is by no means finished, and that&#39;s the point; it should be a platform for experimentation, playful attempts, and some technical leaps of faith.</p>
<p>
	I&#39;m excited to be on the web again.</p>

<p>&nbsp;</p> <h2>
	Highlights Include:</h2>
<h3>
	Money Talks</h3>
<p>
	I&#39;ve spent months getting to this moment. Talk about money has always been a funny one; people are invariably reluctant to show their cards, but desperately curious to see others&#39;.&nbsp; I don&#39;t think money can be handled with kid gloves, because hey, this is business, and business is about money.</p>
<p>
	So, taking inspiration from the open source community, where all code is free to use, abuse and reuse, <a href="http://johndwells.com/services">I&#39;ve put my prices online</a>.&nbsp; It will be an interesting to see how this experiment goes down.</p>
<h3>
	Fancy Sliding Drawer</h3>
<p>
	I&#39;m very pleased with the sublteties going on with the sliding drawer up top.&nbsp; Too many things to go into, but I think the many many hours of tinkering with just precisely how it behaves have paid off. I encourage you to show it, hide it, show it again, scroll down the page and then show it some more. Here, you can even <a class="toggle" href="/#aboutbox">click this link to get started having fun</a>.</p>
<h3>
	Avatar Archives</h3>
<p>
	When I first launched the site (yesterday), the &quot;avatar&quot; image in the top drawer was the same on every page.&nbsp; I&#39;d laboured to choose between 4 that I&#39;d created as options, and finally went with the &quot;safest&quot; one.</p>
<p>
	But I still wanted to use some of the more playful ones, and so last night I realised it could be a fun little feature of my site if they changed regularly. Like every day. So that&#39;s what I plan to do.</p>
<p>
	This might be my favourite feature of the site, because it answered one of the most difficult parts of my self-inflicted brief: to subtly let my personality shine through.</p>
<h3>
	CSS3, HTML5</h3>
<p>
	This is my first foray into the HTML5 world, and I&#39;m treading very carefully.&nbsp; But the point of this move is simply to try, and to learn.</p>
<p>
	The CSS3 effects are real fun, but disappointing that not every browser will be able to show them, which means a lot of potential visitors won&#39;t see them.&nbsp; It&#39;s too bad, because when they&#39;re all put together, the details really are nice. But, that is the point of this wild wild west business.</p>
<h3>
	ExpressionEngine</h3>
<p>
	This site is running on ExpressionEngine, which I can&#39;t even begin to explain my affection for.&nbsp; Between EE and jQuery, sometimes I feel really, really clever.</p>
<h2>
	What&#39;s Next?</h2>
<p>
	A lot, there is no doubt. In fact as I write this, there is still no &quot;blog&quot; front-end, just an RSS feed that sorta works.&nbsp; But I&#39;ve started, and that&#39;s the important part.</p>
<p>
	* <em>Based on 2007 numbers found at <a href="http://www.sifry.com/alerts/archives/000493.html">http://www.sifry.com/alerts/archives/000493.html</a></em></p>

      ]]></content>
    </entry>


</feed>