<?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>Web Developer 2.0</title>
	<atom:link href="http://webdeveloper2.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://webdeveloper2.com</link>
	<description>A blog about web design and development, tools, techniques, products and relevant news.</description>
	<lastBuildDate>Wed, 20 Jan 2010 17:30:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='webdeveloper2.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>how to fix the IE z-index bug with jQuery</title>
		<link>http://webdeveloper2.com/2010/01/how-to-fix-the-ie-z-index-bug-with-jquery/</link>
		<comments>http://webdeveloper2.com/2010/01/how-to-fix-the-ie-z-index-bug-with-jquery/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 17:30:58 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Lab]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[fix]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[IE6]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=1243</guid>
		<description><![CDATA[I recently had cause to do battle with IE6 and 7 whilst implementing some updates to various sites. One of the bugs I came up against was IE&#8217;s odd z-index implementation.
The site features a list of items which include thumbnail images. When hovering the mouse pointer over the thumbnail, a larger version of the image [...]]]></description>
			<content:encoded><![CDATA[<p>I recently had cause to do battle with IE6 and 7 whilst implementing some updates to various sites. One of the bugs I came up against was IE&#8217;s odd z-index implementation.</p>
<p>The site features a list of items which include thumbnail images. When hovering the mouse pointer over the thumbnail, a larger version of the image is displayed &#8211; tooltip style. The problem is that the larger version of the image overlaps the preceding and following list item. In IE 6 &#038; 7 the following list item displays on top of the large image, despite it having been given a higher z-index in the CSS file.</p>
<div id="attachment_1277" class="wp-caption aligncenter" style="width: 380px"><img src="http://webdeveloper2.com/wp-content/uploads/2010/01/IntendedEffect.png" alt="thumbnail image with fullsize image on mouseover" title="Intended Effect" width="370" height="360" class="size-full wp-image-1277" /><p class="wp-caption-text">Intended Effect</p></div>
<div id="attachment_1278" class="wp-caption aligncenter" style="width: 380px"><img src="http://webdeveloper2.com/wp-content/uploads/2010/01/IEBug.png" alt="fullsize image partially hidden" title="IE Bug" width="370" height="360" class="size-full wp-image-1278" /><p class="wp-caption-text">IE Bug</p></div>
<p>This bug is caused by the fact that the list items have relative positioning (in order to position the elements within each item). IE resets the z-index stack for elements within positioned elements. </p>
<blockquote><p>In Internet Explorer positioned elements generate a new stacking context, starting with a z-index value of 0. Therefore z-index doesn&#8217;t work correctly. <a href="http://www.quirksmode.org/bugreports/archives/2006/01/Explorer_z_index_bug.html">quirksmode.org</a></p></blockquote>
<p>The way to solve this is to ensure that the positioned parent element (the list item) has a higher z-index than the positioned elements to be overlapped &#8211; in this case, the other items in the list.</p>
<p>My solution here was thanks to the fact that the site was using jQuery, I was able to implement a very simple piece of code to dynamically alter the z-index values of the items in the list.</p>
<pre class="brush: jscript;">
$('#list a.thumb').mouseover(function(){
  $(this).parent('li').css('z-index', 2).siblings('li').css('z-index',1);
});
</pre>
<p>I&#8217;ll break this down as jQuery&#8217;s function chaining enables very tight but occasionally difficult-to-read code.</p>
<p>Firstly I bind a function to the mouseover event of the thumbnail image</p>
<pre class="brush: jscript;">
$('#list a.thumb').mouseover(function(){
  ...
});
</pre>
<p> next comes the clever bit, jQuery includes a powerful set of DOM traveresal methods which allow you to dance around the document like a scripty Rudolph Nureyev without the need for messy classes and id&#8217;s on every other element.</p>
<pre class="brush: jscript;">
   $(this) //selects the anchor tag over which the mouse has moved
    .parent('li') //traverse to the anchor's parent li element
    .css('z-index', 2) //set the z-index to 2 on the li
    .siblings('li') // selects the sibling li elements (not including the one we just changed)
    .css('z-index',1); //sets the z-index to 1 on all of the sibling li elements
</pre>
<p>By inserting the code into a $(document).ready function the behaviour is applied as soon as the page has loaded.</p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2010/01/how-to-fix-the-ie-z-index-bug-with-jquery/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The folly of the agency-built CMS</title>
		<link>http://webdeveloper2.com/2010/01/the-folly-of-the-agency-built-cms/</link>
		<comments>http://webdeveloper2.com/2010/01/the-folly-of-the-agency-built-cms/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 15:00:07 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Agency]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Content]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[umbraco]]></category>
		<category><![CDATA[web application]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=1252</guid>
		<description><![CDATA[There is a trend within web-agencies to use in-house content management systems (CMSs) for client websites. I&#8217;ve worked with a few of them and built one or two myself and to be honest in most cases they are a waste of time and resources.
Developers love to build things from scratch, by building a system from [...]]]></description>
			<content:encoded><![CDATA[<p>There is a trend within web-agencies to use in-house content management systems (CMSs) for client websites. I&#8217;ve worked with a few of them and built one or two myself and to be honest in most cases they are a waste of time and resources.</p>
<p>Developers love to build things from scratch, by building a system from the ground up, they have an intimate knowledge of every part of it. Unfortunately, in a commercial agency environment, limited timescales and budgets force corners to be cut and these systems &#8211; unless tightly planned and controlled &#8211; can become a nightmare of kludgy code added to satisfy bespoke requirements for a number of very different projects.</p>
<h2>The CMS landscape</h2>
<p>Web-based content management systems are a fairly mature technology these days, ranging from high-end enterprise systems to well-supported open-source solutions and some recent projects designed to support the latest thinking in usability and web-standards.</p>
<p>Most of these system are under continual development, either by dedicated programming teams in the case of commercial software or by communities of coders, each lending their specialist skills to parts of open-source projects.</p>
<p>Agency built solutions on the other hand are generally only updated when a specific project requires it. The gap between the functionality offered by the agency&#8217;s CMS and that offered by the third-party alternatives grows over time.</p>
<h2>Sensible use of resources</h2>
<p>When an agency starts work on a project using their in-house CMS, it&#8217;s often the case that the developers need to do a significant amount of work just to provide basic functionality.</p>
<p>By using a suitably extensible CMS the basic functionality is done and dusted from the get-go, developer time can be more productively used in building any bespoke functionality within the CMS framework. An added benefit is that if the bespoke functionality is built in a modular way, it becomes a re-usable asset.</p>
<p><img src="http://webdeveloper2.com/wp-content/uploads/2010/01/cms-functionality.gif" alt="diagram showing the disparity between agency CMS, Client expectations and third-party CMS functionality" title="CMS functionality comparison" width="464" height="275" class="aligncenter size-full wp-image-1269" /></p>
<h2>Who&#8217;s to blame?</h2>
<p>Nobody really, or possibly everybody. The problem usually occurs when non-technical client-managers ask the developers for estimates on building a site to a certain specification. Developers naturally think in terms of coding the whole thing themselves, after all, it&#8217;s their job to build software.</p>
<h2>One approach</h2>
<p>A good approach is to try and match the requirements of each project to the capabilities of an existing system. The systems evaluated will depend on factors such as: </p>
<ul>
<li>
<h3>Budget</h3>
<p>Depending on the scope of the project, a licensed commercial CMS may be required to fulfil the requirements. These can vary greatly in price so identifying such a requirement early in the project lifecycle can be paramount.
</li>
<li>
<h3>Hosting Platform</h3>
<p>The agency will not always be able to specify the hosting environment for the site, the platform in use will limit the choice of CMS.
</li>
<li>
<h3>Familiarity</h3>
<p>If the project requires some bespoke coding or complex configuration, it may be safer to stick with a CMS with which you have some experience. Reducing the learning curve is another good way to cut development time.
</li>
</ul>
<p>Third-party CMSs will not fit the bill for all projects, but it&#8217;s worth taking a little time to find out if you can skip weeks of re-inventing the wheel and set developers straight to work on custom functionality. You will also have the advantage that, with a CMS in place, your content editors can begin work populating the content and the front-end designers can be working on templates without the developer being a bottleneck in the production process.</p>
<p>I&#8217;m not suggesting that this is the case in all agencies, I know of quite a few who have embraced third-party solutions such as <a href="http://www.wordpress.org/">WordPress</a> or <a href="http://umbraco.org/">Umbraco</a> for even the smallest of sites. I also know a similar number of agencies who&#8217;s in-house CMSs I&#8217;ve either worked with or who&#8217;s employees have muttered &#8220;We have our own CMS, but we don&#8217;t really like to talk about it&#8230;&#8221;. I wish I could say I&#8217;ve seen a good agency-built CMS, but they seem to be in short supply.</p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2010/01/the-folly-of-the-agency-built-cms/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Minor update to Context Voice API</title>
		<link>http://webdeveloper2.com/2009/08/minor-update-to-context-voice-api/</link>
		<comments>http://webdeveloper2.com/2009/08/minor-update-to-context-voice-api/#comments</comments>
		<pubDate>Sat, 22 Aug 2009 01:15:06 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Lab]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[context voice]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=1226</guid>
		<description><![CDATA[I&#8217;ve finally got around to updating my Context Voice API Library to include the latest addition to the API.
The new parameter for the reactions method of the API is &#8220;threaded&#8221;. When set to true, the API returns retweets (or reactions-to-reactions) as child elements of the original reaction.
I&#8217;ve also updated the demo to include the new [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve finally got around to updating my Context Voice API Library to include the latest addition to the API.</p>
<p>The new parameter for the reactions method of the API is &#8220;threaded&#8221;. When set to true, the API returns retweets (or reactions-to-reactions) as child elements of the original reaction.</p>
<p>I&#8217;ve also updated the demo to include the new parameter and display threaded reactions accordingly.</p>
<p><a href="http://dev.webdeveloper2.com/contextvoice/"><img src="http://webdeveloper2.com/wp-content/uploads/2009/08/cv_threaded-600x231.png" alt="ContextVoice Demo - threaded reactions" title="ContextVoice Demo - threaded reactions" width="600" height="231" class="aligncenter size-large wp-image-1227" /></a></p>
<p>This makes it easier to track the social graph for a URL in addition to it&#8217;s online spread.</p>
<p style="text-align: center;"><a href="http://dev.webdeveloper2.com/contextvoice/" class="demo">Demo</a> <a href="http://dev.webdeveloper2.com/contextvoice/docs/" class="docs">Manual</a> <a href="http://dev.webdeveloper2.com/contextvoice/contextvoice.zip" class="download">Download</a></p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/08/minor-update-to-context-voice-api/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Unmasker Chronicles: Dawn of the Demon</title>
		<link>http://webdeveloper2.com/2009/07/unmasker-chronicles-dawn-of-the-demon/</link>
		<comments>http://webdeveloper2.com/2009/07/unmasker-chronicles-dawn-of-the-demon/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 02:32:55 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Lab]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[user interface]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=1189</guid>
		<description><![CDATA[Ever get fed up of seeing the same phrases used over and over again? I was looking through lists of Twitter users on Mr. Tweet and started to get irritated by the number of social media experts, affilate marketing gurus and people who were &#8220;passionate&#8221; about everything from Twitter to printer cartridges.
As a private joke, [...]]]></description>
			<content:encoded><![CDATA[<p>Ever get fed up of seeing the same phrases used over and over again? I was looking through lists of Twitter users on <a href="http://mrtweet.com/">Mr. Tweet</a> and started to get irritated by the number of social media experts, affilate marketing gurus and people who were &#8220;passionate&#8221; about everything from Twitter to printer cartridges.</p>
<p>As a private joke, I wrote a simple php script which would take any Twitter bio and replace certain words, in a rude and derogatory way. I called it &#8220;<a href="http://unmasker.webdeveloper2.com/">Unmasker</a>&#8221; and it provided a few minutes of fun.</p>
<p>My colleague <a href="http://howidesigned.wordpress.com/">Greg Smith</a> suggested that the idea had the potential to go viral if it was presented in a fun way. He (eventually) produced a great design for the app.</p>
<p><a href="http://webdeveloper2.com/wp-content/uploads/2009/07/UNMASK-LayeredBG.png" class="thickbox" title="Greg Smith&#039;s original design for unmasker"><img src="http://webdeveloper2.com/wp-content/uploads/2009/07/UNMASK-LayeredBG-132x300.png" alt="Greg Smith&#039;s original design for unmasker" width="132" height="300" class=" alignleft size-medium wp-image-1195" /></a>Given the quality of the artwork, I thought it only fair to put some effort in the UX design and create the scrolling background effect. The whole front-end is essentially jQuery powered, including the use of <a href="http://flesler.blogspot.com/">Ariel Flesler</a>&#8217;s excellent <a href="http://plugins.jquery.com/project/ScrollTo">ScrollTo plugin</a>. A simple php script provides the database, Twitter API wrapper and text-replacement functionality.</p>
<p>I set up a new <a href="http://twitter.com/unmasker">Twitter account</a> to use for the app, I knew that it would need to generate a lot of tweets to spread the links but I didn&#8217;t want to spam anybody. I wrote into the application logic that nobody would receive more than one automated @mention. Anybody following the <a href="http://twitter.com/unmasker">Unmasker</a> twitter account would probably not do so for too long, unless they were spam-bots themselves in which case who cares?</p>
<p>The Unmasker account also allowed Greg and myself to role-play the Unmasker avatar &#8211; sarcastic, abrasive, belligerent &#8230; come to think of it, we haven&#8217;t really needed to role-play too much.</p>
<p>So on Thursday 23rd July at about 10:30 GMT we started the ball rolling by seeding a few choice names into <a href="http://unmasker.webdeveloper2.com/">the unmasker application</a>, many of them were friends who already knew about it, others were randomly selected from searches for terms such as &#8220;social media&#8221; and &#8220;expert&#8221;.</p>
<h2>Reactions have been mixed</h2>
<p>Most people seem to see the joke, some are baffled and a few have been wonderfully rude.<br />
<a href="http://twitter.com/countzeero">countzeero</a>&#8217;s compliment was particularly nice</p>
<blockquote><p>countzeero: @StandUP4Design I am getting my ass toasted right next to you &#8220;down&#8221; there @unmasker is one of the best twitups I have seen&#8230;<br />
<a href="http://twitter.com/countzeero/status/2873340566">http://twitter.com/countzeero/status/2873340566</a></p></blockquote>
<p>&#8230;as was PesciTriD&#8217;s Unmasker Haiku</p>
<blockquote><p>PesciTriD: thanks to @unmasker / ribald twitter speak revealed / keep your tweets comely<br />
<a href="http://twitter.com/PesciTriD/statuses/2818433827">http://twitter.com/PesciTriD/statuses/2818433827</a></p></blockquote>
<p><a href="http://twitter.com/jasoncrouch">jasoncrouch</a> and <a href="http://twitter.com/MrBoom">MrBoom</a> both suffered from complete sense of humor failures &#8230;</p>
<blockquote><p>jasoncrouch: @unmasker Get a life. You are a sad little clown<br />
<a href="http://twitter.com/jasoncrouch/statuses/2798942492">http://twitter.com/jasoncrouch/statuses/2798942492</a></p></blockquote>
<blockquote><p>MrBoom: go away fuck face<br />
<a href="http://twitter.com/MrBoom/status/2819017913">http://twitter.com/MrBoom/status/2819017913</a></p></blockquote>
<p><a href="http://twitter.com/amedee">amadee</a> branded Unmasker a <em>Twitspammer</em> and we never even offered him any cut-price pharmaceuticals</p>
<blockquote><p>amedee: blocking @unmasker &#8211; yet another Twitspammer<br />
<a href="http://twitter.com/amedee/status/2827979231">http://twitter.com/amedee/status/2827979231</a></p></blockquote>
<p><a href="http://twitter.com/BillBoorman">BillBoorman</a> and <a href="http://twitter.com/rnadworny">rnadworny</a> were under the impression that I was trying to remain anonymous, despite putting my name and twitter username in the page footer and using the same domain as this blog.</p>
<blockquote><p>BillBoorman: I unmasked @unmasker http://is.gd/1KatS #unmasked Easier to critiscise when you hide. Who are you really?<br />
<a href="http://twitter.com/BillBoorman/status/2817328451">http://twitter.com/BillBoorman/status/2817328451</a></p></blockquote>
<blockquote><p>rnadworny: @Techn0tic hiding behind @unmasker . Come out of the closet, Dave!<br />
<a href="http://twitter.com/rnadworny/status/2796790735">http://twitter.com/rnadworny/status/2796790735</a></p></blockquote>
<p><a href="http://twitter.com/Rufus_Jay">Rufus_Jay</a> finally worked it out in a magnificent display of calm restraint</p>
<blockquote><p>Rufus_Jay: I get what @unmasker is up to. Bit miffed at first, but I understand the point. #unmasked<br />
<a href="http://twitter.com/Rufus_Jay/status/2815259193">http://twitter.com/Rufus_Jay/status/2815259193</a></p></blockquote>
<p><a href="http://twitter.com/oxfordgirl">oxfordgirl</a> seemed to find the whole whole thing extremely upsetting, still unsure what she thought we were &#8220;trying to track&#8221; or where the connection to Iran came from in her panic-stricken tweet &#8230;</p>
<blockquote><p>oxfordgirl: Be ware @unmasker may be trying to track, Don&#8217;t click on links #iranelection #iran<br />
<a href="http://twitter.com/oxfordgirl/status/2828138746">http://twitter.com/oxfordgirl/status/2828138746</a></p></blockquote>
<p>&#8230; but that didn&#8217;t stop <a href="http://twitter.com/lorettas3/status/2828155608">lorettas3</a>, <a href="http://twitter.com/AHMARINEJAD/status/2828159325">AHMARINEJAD</a>, <a href="http://twitter.com/lady_stardust9/status/2828159433">lady_stardust9</a>, <a href="http://twitter.com/artfanatic411/status/2828163485">artfanatic411</a>, <a href="http://twitter.com/Shadiii/status/2828168368">Shadiii</a> and a whole host of others from blindly retweeting the alarm with no idea whatsoever of what it was, thankfully <a href="http://twitter.com/Kate_Butler">Kate_Butler</a> chipped in as the voice of reason with her perceptive defusal</p>
<blockquote><p>Kate_Butler: @oxfordgirl i&#8217;m pretty sure @unmasker is simply a bit of harmless fun. nothing to worry about.<br />
<a href="http://twitter.com/Kate_Butler/status/2828171625">http://twitter.com/Kate_Butler/status/2828171625</a></p></blockquote>
<p>That wasn&#8217;t enough to stop <a href="http://twitter.com/The_FNGa">the_FNGa</a> from demonstrating his suitability for the intelligence services by doing a <a href="http://whois.domaintools.com/webdeveloper2.com">whois lookup on my domain</a>. Clever(ish), but obviously not clever enough to actually look at the site to see what the fuss was about.</p>
<blockquote><p>The_FNGa: @unmasker is running a BS script via Twitter API. If you don&#8217;t like it, contact David Kinsella @ dave@web-developer.ws #iranelection #iran<br />
<a href="http://twitter.com/The_FNGa/status/2831514109">http://twitter.com/The_FNGa/status/2831514109</a></p></blockquote>
<p>He also tweeted my phone number, which unlike the email address actually is current and in use. So far, the number of calls I&#8217;ve received to complain remains at zero. I was hoping Mr FNGa would call me up to discuss the problem but it seems his grievances are only serious enough for people other than himself to take care of. If anybody knows his number&#8230;</p>
<h2>What&#8217;s the point?</h2>
<p>Why is everybody so hung up on this idea of there being a point? I&#8217;ve always thought that some of the best stuff on the Internet is completely pointless. For example one of my favourite websites of all time is <a href="http://www.emotioneric.com/">Eric Conveys an Emotion</a> check it out, it&#8217;s pointless fun &#8211; just like unmasker.</p>
<h2>Did it work?</h2>
<p>Considering that the site was launched with no real fanfare and a minimal amount of seeding, the results have been very promising so far. In the first 5 days since launch we&#8217;ve had 5,883 visits and 7,707 pageviews. The traffic spiked on Friday at 2715 visits and with between 500 and 1000 visits on each of the other days. It will be interesting to see how the traffic continues. </p>
<p><img src="http://webdeveloper2.com/wp-content/uploads/2009/07/unmaskerstats.png" alt="unmaskerstats" title="unmaskerstats" width="254" height="157" class="alignnone size-full wp-image-1208" /></p>
<p>We decided to include the hashtag <a href="http://search.twitter.com/search?q=%23unmasked">#unmasked</a> in all of the tweets sent by the app so that we could try to track things better, according to <a href="http://twist.flaptor.com/">Twist</a>, Friday saw #unmasked grabbing a 0.02% share of Twitter traffic, it&#8217;s hard to tell how accurate that is though.</p>
<h2>What else did we learn?</h2>
<ul>
<li>Being a bit rude provokes a reaction, we may not have got as much traffic without ruffling a few feathers.</li>
<li>Some people fear what they don&#8217;t understand and react accordingly (that&#8217;s not really news is it?)</li>
<li>If you use a popular hashtag, people will retweet anything &#8211; try tweeting &#8220;<a href="http://twitter.com/?status=Chocolate+ice-cream+cures hemorroides+%23iranelection">Chocolate ice-cream cures hemorroides #iranelection</a>&#8221; and see what happens</li>
<li>Some people are so insecure about their online profile, they will change it in reaction to a text-replacement script making fun of them</li>
<li>Some people do this because the script mocked them for having no bio &#8211; this is perfectly acceptable</li>
<li>Some people stick with their bio despite what unmasker says, these people are right to do so</li>
<li>When building something that you hope will go viral; a simple idea &#8211; well executed is probably a better option than a complex idea hurriedly thrown together.</li>
</ul>
<h2>What&#8217;s next?</h2>
<p>I don&#8217;t know, any suggestions?</p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/07/unmasker-chronicles-dawn-of-the-demon/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Context Voice API PHP Library</title>
		<link>http://webdeveloper2.com/2009/06/context-voice-api-php-library/</link>
		<comments>http://webdeveloper2.com/2009/06/context-voice-api-php-library/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 16:30:06 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Lab]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[context voice]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[web content]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=1174</guid>
		<description><![CDATA[Context Voice is the new name for uberVU&#8217;s web API, they recently released a new version (1.1) and I&#8217;ve updated my PHP library accordingly and written a spiffy new demo.
Demo Manual Download
New features

New method getUrlReactions
returns the indexed reactions (tweets, diggs etc.) it includes a number of optional parameters:

since &#8211; retrieve all the reactions that are [...]]]></description>
			<content:encoded><![CDATA[<p>Context Voice is the new name for uberVU&#8217;s web API, they recently released a new version (1.1) and I&#8217;ve updated my PHP library accordingly and written a spiffy <a href="http://dev.webdeveloper2.com/contextvoice/">new demo</a>.</p>
<p style="text-align: center;"><a href="http://dev.webdeveloper2.com/contextvoice/" class="demo">Demo</a> <a href="http://dev.webdeveloper2.com/contextvoice/docs/" class="docs">Manual</a> <a href="http://dev.webdeveloper2.com/contextvoice/contextvoice.zip" class="download">Download</a></p>
<h2>New features</h2>
<ul>
<li>New method <b>getUrlReactions</b><br />
returns the indexed reactions (tweets, diggs etc.) it includes a number of optional parameters:</p>
<ul>
<li><b>since</b> &#8211; retrieve all the reactions that are newer than this timestamp</li>
<li><b>include</b> &#8211; include only the reactions from the specified platforms: twitter, friendfeed, digg, wordpress, blogger, typepad, disqus, flickr, picasa, youtube, vimeo, delicious, reddit, hackernews, mixx, stumbleupon, nytimes, slashdot</li>
<li><b>exclude</b> &#8211; exclude the reactions from the specified platforms: twitter, friendfeed, digg, wordpress, blogger, typepad, disqus, flickr, picasa, youtube, vimeo, delicious, reddit, hackernews, mixx, stumbleupon, nytimes, slashdot</li>
<li><b>filter</b> &#8211; exclude the reactions from Twitter that repeat/quote someone&#8217;s tweet regarding the current conversation</li>
<li><b>order</b> &#8211; asc, desc &#8211; order the reactions asc/desc using the &#8216;created_at&#8217; field</li>
<li><b>page</b> &#8211; start from the specific page in the result set</li>
<li><b>perpage</b> &#8211; how many reactions will be included per page (default: 25; max: 100)</li>
</ul>
</li>
<li><b>Anonymous API calls</b><br />
These are limited to only calling the getUrlReactions method and rate limited to 500 calls per day.
</li>
</ul>
<p>For further details of the Context Voice API and it&#8217;s features, see the <a href="http://developer.contextvoice.com/docs">API documentation</a>.</p>
<p style="text-align: center;"><a href="http://dev.webdeveloper2.com/contextvoice/" class="demo">Demo</a> <a href="http://dev.webdeveloper2.com/contextvoice/docs/" class="docs">Manual</a> <a href="http://dev.webdeveloper2.com/contextvoice/contextvoice.zip" class="download">Download</a></p>
<p><script src="http://www.phpclasses.org/browse/package/5431/format/badge.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/06/context-voice-api-php-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UX Design for Developers</title>
		<link>http://webdeveloper2.com/2009/06/ux-design-for-developers/</link>
		<comments>http://webdeveloper2.com/2009/06/ux-design-for-developers/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 22:30:07 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[UX]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=1147</guid>
		<description><![CDATA[I&#8217;m currently building a new application and one of the areas that I&#8217;ve been concentrating on is the User Experience (UX) aspects of the build.
Often, the UX design is considered to be mainly a creative process, undertaken as part of the graphic or web design phase of the project. It is then down to the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently building a new application and one of the areas that I&#8217;ve been concentrating on is the <a href="http://en.wikipedia.org/wiki/User_experience">User Experience (UX)</a> aspects of the build.</p>
<p>Often, the UX design is considered to be mainly a creative process, undertaken as part of the graphic or web design phase of the project. It is then down to the developer to implement the UX as specified.</p>
<p>In this case, I&#8217;m building the back-end functionality first but that doesn&#8217;t mean I don&#8217;t need to think about making using the application a smooth painless experience, regardless of what improvements will be made as part of the front-end design.</p>
<h2>Key Idea &#8211; Remove Barriers</h2>
<p><a href="http://www.flickr.com/photos/b-tal/80728889/"><img src="http://webdeveloper2.com/wp-content/uploads/2009/06/barrier.jpg" alt="Crossing the Line by B Tal" title="Crossing the Line by B Tal" width="600" height="72" class="aligncenter size-full wp-image-1160" /></a></p>
<p>To make interactions as painless as possible, I&#8217;ve sought inspiration from not only web applications but also desktop and mobile apps. </p>
<ul>
<li>Adobe Air has given flash developers the capacity to create and publish desktop applications. These guys are often at the forefront of designing great user experiences and it shows in the slickness of many apps.</li>
<li>Apple&#8217;s iPhone has thousands of applications available and the limited screen size combined with the touch screen interface has resulted in some interesting new application design conventions. The native applications such as e-mail and the iPod interface present examples of functionality honed down to just the most essential interactions.</li>
</ul>
<h2>Example #1: Registration</h2>
<p><a href="http://www.flickr.com/photos/keysofvirtue/87850379/"><img src="http://webdeveloper2.com/wp-content/uploads/2009/06/keys.jpg" alt="keys of virtue" title="keys of virtue" width="600" height="72" class="aligncenter size-full wp-image-1166" /></a></p>
<p>In the conventional scheme, a user would enter their registration details, receive a confirmation e-mail, activate their account and then login to the site. This is often required even for a free trial of the application.</p>
<h3>Automatic Login</h3>
<p>I&#8217;ve built the registration system so it will automatically log the user into the app once their registration has been successfully processed. Rather than wait for an account activation, I&#8217;m doing a simple check to ensure the mailbox for the e-mail address that they entered exists. If I wanted to use an activation code, I could add a grace period during which the user could use the application before requiring an activation code to confirm the account.</p>
<h3>Trial without registration</h3>
<p>I&#8217;ve coded my app so the user can dive straight in and try out the application (in a limited form). All the data that they enter is held in a session cookie so if no further action is taken, it will expire soon after the user leaves the site. If the user decides to go ahead and register, all the data entered in the session is recorded into the database against their new account. This, combined with the automatic login provides a seamless transition from free trial to registered user without having to re-enter any information.</p>
<h2>Example #2: Item Selection</h2>
<p><a href="http://www.flickr.com/photos/pulpolux/28376505/"><img src="http://webdeveloper2.com/wp-content/uploads/2009/06/selection.jpg" alt="selection" title="selection" width="600" height="72" class="aligncenter size-full wp-image-1169" /></a></p>
<p>One part of my app involves selecting an item from a list. It&#8217;s unknown how many items might be in the list so the conventional developer solution would be to create a drop-down list with either an automatic update when  an item is selected or a button to confirm the selected item.<br />
I see problems with each of these approaches, a drop-down list could potentially be quite long, requiring scrolling to navigate. If the user accidentally selects an item while scrolling, an automatic update is unforgiving. The use of a confirm button negates that problem but needs an additional interaction <strong>after</strong> the user has found the item that they were looking for. The confirm button becomes an unnecessary obstacle in the flow of the application.</p>
<h3>One click selection</h3>
<p>My solution is to generate a list of links, each of which can be clicked to make the selection. Initially this looks like a good solution for small numbers of items, but bad for longer lists.<br />
The reason that I&#8217;ve chosen to go this way is that the mechanism is good, a single click once you&#8217;ve found the item. How the list is presented can be tackled as part of the front-end design. In this case I might use something like the <a href="http://www.ihwy.com/Labs/demos/current/jquery-listnav-plugin.aspx">jQuery ListNav plugin</a> from <a href="http://www.ihwy.com">iHwy Inc</a>. </p>
<h2>Some Tips</h2>
<p>While in development mode you can improve user experience by making choices based on mechanisms and functionality, not on presentation. If, like my current project, you don&#8217;t have a specific design to work to, these tips can still make a difference.</p>
<ul>
<li><strong>Look for inspiration</strong> &#8211; A good designer will keep scrapbooks of design elements, textures, colours, shapes etc. similarly, you can make a note of good experiences from any source, not just software applications &#8211; video games, information kiosks, gadgets, DVD players, whatever makes you think &#8220;that was simple/easy/nice&#8221;.</li>
<li><strong>Create a smooth application flow</strong> &#8211; remove unnecessary steps wherever possible. A single click to advance creates momentum rather than an obstacle to overcome.</li>
<li><strong>Don&#8217;t think about presentation</strong> &#8211; provide all the required output for building the front-end design. Strong front-end UX design should build on good application flow rather than try to impose it on to  cumbersome application functionality.</li>
<li><strong>Follow people logic, not application logic</strong> &#8211; Think of the simplest path from one application state to another, regardless of whether it matches your database schema or object methods.</li>
<li><strong>Conventions are compromises</strong> &#8211; tried and tested conventions only became so because most people have come to accept them. At some point in the past, somebody went out on a limb and built them first. Don&#8217;t be afraid to break convention if it makes sense to do so.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/06/ux-design-for-developers/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Pure CSS rollover for printable images</title>
		<link>http://webdeveloper2.com/2009/06/pure-css-rollover-for-printable-images/</link>
		<comments>http://webdeveloper2.com/2009/06/pure-css-rollover-for-printable-images/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 12:32:05 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Lab]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[image]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=1113</guid>
		<description><![CDATA[This is a quickie but may be useful to somebody out there in the big wild interweb.
I had a requirement to implement linked images in a page with a separate rollover image. Normally I&#8217;d be using CSS to switch backgrounds but the client wanted the normal image to be visible when the page was printed [...]]]></description>
			<content:encoded><![CDATA[<p>This is a quickie but may be useful to somebody out there in the big wild interweb.</p>
<p>I had a requirement to implement linked images in a page with a separate rollover image. Normally I&#8217;d be using CSS to switch backgrounds but the client wanted the normal image to be visible when the page was printed out. I didn&#8217;t want to have to add in javascript, regardless of how simple it would be so I came up with this idea.</p>
<h2>The HTML</h2>
<p>I&#8217;ve used a simple image (&lt;img&gt;) tag contained inside an anchor (&lt;a&gt;) tag to create the link, this ensures that the image will be printed for most default setups.<br />
The anchor tag has a class assigned to be the hook for the rollover and I&#8217;ve used an inline style attribute to set the background image of the element to the rollover image. This could also be done by adding a specific class in the stylesheet &#8211; but not  in this demo.</p>
<pre class="brush: xml;">
&lt;a href=&quot;#&quot; class=&quot;rollover&quot; style=&quot;background-image:url(rollover.png);&quot;&gt;
 &lt;img src=&quot;normal.png&quot; /&gt;
&lt;/a&gt;
</pre>
<h2>The CSS</h2>
<p>I&#8217;ve set the <em>display</em> property for the anchor tag to <em>inline-block</em> so that it will sit within the page flow as normal, but takes on the width and height of the image contained inside it.<br />
when the mouse pointer is over the anchor, the <em>visibility</em> property of the contained image is set to <em>hidden</em>, uncovering the the anchor tag with it&#8217;s background image.</p>
<pre class="brush: css;">
.rollover{
    display:inline-block;
}
.rollover:hover img{
    visibility:hidden;
}
</pre>
<h2>Example</h2>
<style type="text/css">
  .rollover{
    display:inline-block;
  }
  .rollover:hover img{
    visibility:hidden;
  }
</style>
<p><a href="#" class="rollover" style="background-image:url(http://webdeveloper2.com/wp-content/uploads/2009/06/rollover.png);"><img src="http://webdeveloper2.com/wp-content/uploads/2009/06/normal.png" alt="normal" title="normal" width="125" height="125" /></a></p>
<p>I&#8217;ve tested this on a bunch of browsers &#8211; it doesn&#8217;t work in IE6 but then, it doesn&#8217;t work in Netscape, Mosaic or Lynx either, so go figure.</p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/06/pure-css-rollover-for-printable-images/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>uberVU php library</title>
		<link>http://webdeveloper2.com/2009/06/ubervu-php-library/</link>
		<comments>http://webdeveloper2.com/2009/06/ubervu-php-library/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 17:11:29 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Lab]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Conversation]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[tracking]]></category>
		<category><![CDATA[uberVU]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=1087</guid>
		<description><![CDATA[uberVU is a conversation engine which aggregates conversations from social websites around specific URLs. They track services like:

Twitter / FriendFeed
Digg / Reddit/ Hacker News
Major blogging platforms (Wordpress, Blogger, MT, Typepad etc)
Major video sharing websites (Youtube, Vimeo)
Flickr / Picasa
Disqus

Like any decent web based service uberVU are making an API available for us developers to play around [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ubervu.com">uberVU</a> is a conversation engine which aggregates conversations from social websites around specific URLs. They track services like:</p>
<ul>
<li>Twitter / FriendFeed</li>
<li>Digg / Reddit/ Hacker News</li>
<li>Major blogging platforms (Wordpress, Blogger, MT, Typepad etc)</li>
<li>Major video sharing websites (Youtube, Vimeo)</li>
<li>Flickr / Picasa</li>
<li>Disqus</li>
</ul>
<p>Like any decent web based service uberVU are making an API available for us developers to play around with the capabilities of their system. I decided that, in the absence of anybody else doing it (and as a nice little coding exercise for myself), I would build a php library for using the uberVU API.</p>
<p style="text-align: center;"><a class="demo" href="http://dev.webdeveloper2.com/ubervu/index.php">Demo</a> <a class="download"   onClick="pageTracker._trackEvent('Code', 'Download', 'uberVU API php class');" href="http://dev.webdeveloper2.com/ubervu/ubervu.zip">Download (.zip ~15KB)</a></p>
<p>In order to use the library, you will need to register for a developer account and apply for an API key, go to <a href="http://developer.ubervu.com/">http://developer.ubervu.com/</a> to get started.</p>
<h2>How to use it</h2>
<p>Include the <code>ubervu.php</code> file<br />
The basic ubervu object is constructed using only the api key as a parameter:</p>
<pre class="brush: php;">
&lt;?php
include('ubervu.php');
$uv = new ubervu(&quot;[my api key]&quot;);
?&gt;
</pre>
<p>the ubervu object contains 3 methods:</p>
<ul>
<li><strong>getUrlInfo(</strong>string <em>url</em><strong>)</strong></li>
<li><strong>addUrl(</strong>string <em>url</em><strong>)</strong></li>
<li><strong>addUrls(</strong>mixed <em>urls</em><strong>)<br />
<span style="font-weight: normal;">the <em>urls</em> parameter</span><span style="font-weight: normal;"> can be either a comma delimited string or an array</span></strong></li>
</ul>
<p>Each method returns a <em>uv_response</em> object this has 2 basic properties; <em>data</em> and <em>info</em>.</p>
<p>The data property contains properties parsed from the ubervu api response, the info property contains information returned from the api call made by <a href="http://uk2.php.net/manual/en/function.curl-getinfo.php">cURL</a>.</p>
<pre class="brush: plain;">
uv_Response Object
(
[data] =&gt; stdClass Object
(
... //returned data object
)
[info] =&gt; Array
(
[url] =&gt; http://api.ubervu.com/1.0/resources/?url=[url]&amp;apikey=[apikey]&amp;format=json
[content_type] =&gt; application/json
[http_code] =&gt; 200
[header_size] =&gt; 256
[request_size] =&gt; 150
[filetime] =&gt; -1
[ssl_verify_result] =&gt; 0
[redirect_count] =&gt; 0
[total_time] =&gt; 0.427589
[namelookup_time] =&gt; 0.029885
[connect_time] =&gt; 0.119761
[pretransfer_time] =&gt; 0.119851
[size_upload] =&gt; 0
[size_download] =&gt; 744
[speed_download] =&gt; 1739
[speed_upload] =&gt; 0
[download_content_length] =&gt; 744
[upload_content_length] =&gt; 0
[starttransfer_time] =&gt; 0.427436
[redirect_time] =&gt; 0
)
)
</pre>
<p>The info property should be useful in determining whether a call has failed due to unavailability of the API e.g. [http_code] == 404</p>
<h3>Get Information about a URL</h3>
<pre class="brush: php;">
&lt;?php
$uv = new ubervu(&quot;[my api key]&quot;);
$data = $uv-&gt;getURLInfo(&quot;http://mydomain.com/page&quot;);
?&gt;
</pre>
<h3>Add a URL for tracking</h3>
<pre class="brush: php;">
&lt;?php
$uv = new ubervu(&quot;[my api key]&quot;);
$data = $uv-&gt;addUrl(&quot;http://mydomain.com/page&quot;);
?&gt;
</pre>
<h3>Add a number of URLs for tracking</h3>
<pre class="brush: php;">
&lt;?php
$uv = new ubervu(&quot;[my api key]&quot;);
$data = $uv-&gt;addUrls(&quot;http://mydomain.com/page ,http://mydomain.com/page2 ,http://mydomain.com/page3&quot;);
?&gt;
</pre>
<p>you can also pass an array of URLs into this method</p>
<pre class="brush: php;">
&lt;?php
$urls = array(&quot;http://mydomain.com/page&quot;);
array_push ($urls,&quot;http://mydomain.com/page2&quot;);
array_push ($urls,&quot;http://mydomain.com/page3&quot;);
$uv = new ubervu(&quot;[my api key]&quot;);
$data = $uv-&gt;addUrls($urls);
?&gt;
</pre>
<p>at the time of writing there is possibly a minor issue with the batch add method but the uberVU team are all over it.</p>
<h3>That&#8217;s all for now</h3>
<p>I&#8217;ll try to refine this library as development on the uberVU API continues, who knows, maybe I&#8217;ll even move it to proper project hosting and write better documentation for it. In the meantime play with the demo, the view code link at the bottom of any result set will help you to see what&#8217;s going on.</p>
<p style="text-align: center;"><a class="demo" href="http://dev.webdeveloper2.com/ubervu/index.php">Demo</a> <a class="download"   onClick="pageTracker._trackEvent('Code', 'Download', 'uberVU API php class');" href="http://dev.webdeveloper2.com/ubervu/ubervu.zip">Download (.zip ~15KB)</a></p>
<p>Drop me a line if you have any questions, suggestions or to let me know about something you&#8217;ve used the library for.</p>
<h3>Update</h3>
<p>This project is now listed on <a href="http://www.phpclasses.org/browse/package/5431.html">PHP Classes</a> and <a href="http://freshmeat.net/projects/ubervu-php-library">Freshmeat.net</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/06/ubervu-php-library/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WWW and User Experience</title>
		<link>http://webdeveloper2.com/2009/05/www-and-user-experience/</link>
		<comments>http://webdeveloper2.com/2009/05/www-and-user-experience/#comments</comments>
		<pubDate>Tue, 12 May 2009 21:00:12 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[domain]]></category>
		<category><![CDATA[poll]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=769</guid>
		<description><![CDATA[Which do you prefer?
www.somedomain.com or simply somedomain.com ?
The use of the WWW (or variously: wuh wuh wuh, dub dub dub, dubya dubya dubya etc.) in domain names is something of a debatable subject.
A colleague recently stated that people feel more comfortable browsing a site which uses the www prefix &#8211; a &#8220;fact&#8221; which I initially [...]]]></description>
			<content:encoded><![CDATA[<p>Which do you prefer?</p>
<p><strong>www.somedomain.com</strong> or simply <strong>somedomain.com</strong> ?</p>
<p>The use of the <em>WWW</em> (or variously: <em>wuh wuh wuh</em>, <em>dub dub dub</em>, <em>dubya dubya dubya</em> etc.) in domain names is something of a debatable subject.</p>
<p>A colleague recently stated that people feel more comfortable browsing a site which uses the www prefix &#8211; a <em>&#8220;fact&#8221;</em> which I initially dismissed as an irrelevant personal preference. I&#8217;ve always treated this issue from a techie standpoint and it&#8217;s never occured to me that people might have a preference.</p>
<h2>The Technical Standpoint</h2>
<p>It is fairly normal these days for a site to respond to domain.com in exactly the same way as www.domain.com, in many cases the www prefixed address will be redirected to the non-prefixed version.</p>
<p>The historical reasons for using the www prefix are outlined by <a href="http://www.w3.org/People/Berners-Lee/">Tim Berners-Lee</a> <a href="http://www.w3.org/Provider/Style/www.html">here</a>.</p>
<blockquote><p>It is a convention. I suggested it early on, in this guide, and I am of two minds about it now. An alias was a better alternative to &#8220;pegasus.foo.com&#8221; which typically resulted when someone who happened to have a machine called pegasus started to run a web server for foo company. (The www prefix on a computer name also allows one to guess that it was a web server. This allowed early estimates of the numbers of servers, for example.) In those days I suggested an alias www.foo.com for the HTTP server in line with existing Internet practice of ftp.foo.com for the FTP server and mail.foo.com for the smtp server, and so on. These aliases could, even if originally on the same machine, be moved to point to machines of appropriate size as necessary.</p>
<p>You don&#8217;t have this flexibility of configuration is you point everyone at &#8220;foo.com&#8221; itself for all services. Typically early webmasters could not have comandeered the &#8220;foo.com&#8221; address itself.</p></blockquote>
<p>The <a href="http://no-www.org/">no-www project</a> has this to say on the subject:</p>
<blockquote>
<p align="justify">By default, all popular Web browsers assume the HTTP protocol. In doing so, the software prepends the &#8216;http://&#8217; onto the requested URL and automatically connect to the HTTP server on port 80. Why then do many servers require their websites to communicate through the www subdomain? Mail servers do not require you to send emails to recipient@mail.domain.com. Likewise, web servers should allow access to their pages though the main domain unless a particular subdomain is required.</p>
<p align="justify">Succinctly, use of the www subdomain is redundant and time consuming to communicate. The internet, media, and society are all better off without it.</p>
</blockquote>
<p>Jeff Atwood finds the <a href="http://www.codinghorror.com/blog/archives/001109.html">whole debate rather amusing</a>:</p>
<blockquote><p>Readable URLs are important, but <strong>you should be far more concerned about the content behind that URL than the URL itself</strong>.</p></blockquote>
<p>The overall consensus is that, for a technical point of view, it doesn&#8217;t matter whether you use <em>www</em> or not, just as long as you pick one approach and stick with it. If you want to use the www prefix then it is best practice that your website will redirect requests that do not include the prefix and vice versa.</p>
<h2>The User Experience Standpoint</h2>
<p>Despite all of the web techie discussion and debate over which (if any) approach is best. It doesn&#8217;t answer the question raised by my colleague that &#8220;<em>people feel more comfortable browsing a site which uses the www prefix</em>&#8220;. As I stated, I&#8217;d dismissed this as an irrelevant personal preference &#8211; however I quickly realised that in order to deliver a good user experience, personal preferences need to be taken into account. To this end I began canvassing on Twitter to see where the tide of opinion was heading. Unfortunately nearly all of the people that I talk to on Twitter are also somewhat technically minded and the <em>non-www</em> route appeared to be the favourite.</p>
<p>There may be a case that a website visitor who visits a site listed in printed collateral as <strong>www.domain.com</strong> will be slightly unnerved if the site redirects to <strong>domain.com</strong> &#8211; particularly in light of widespread warnings over <a href="http://en.wikipedia.org/wiki/Phishing">phishing scams</a>.</p>
<p>This is where I&#8217;m hoping that some non-developers will give me their opinion. </p>
<h2>What do you think?</h2>
<script type='text/javascript' language='javascript' charset='utf-8' src='http://s3.polldaddy.com/p/1614733.js'></script><noscript> <a href='http://answers.polldaddy.com/poll/1614733/'>View Poll</a></noscript>
<p>Thanks to <a href="http://twitter.com/paulfabretti">@paulfabretti</a>, <a href="http://twitter.com/Rich_Clark">@Rich_Clark</a>, <a href="http://twitter.com/leekelleher">@leekelleher</a>, <a href="http://twitter.com/mattrhodes">@mattrhodes</a>, <a href="http://twitter.com/barthox">@barthox</a>, <a href="http://twitter.com/dav_hamill">@dav_hamill</a> and <a href="http://twitter.com/AndyMHolt">@AndyMHolt</a> for taking part in the discussion and pointing me to some of the sources cited in this post.</p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/05/www-and-user-experience/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Swine Flu + Google-Fu = Monkey Wank Fever</title>
		<link>http://webdeveloper2.com/2009/05/swine-flu-google-fu-monkey-wank-fever/</link>
		<comments>http://webdeveloper2.com/2009/05/swine-flu-google-fu-monkey-wank-fever/#comments</comments>
		<pubDate>Tue, 05 May 2009 16:30:11 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Lab]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[Monkey Wank Fever]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[Swine Flu]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=1052</guid>
		<description><![CDATA[I think something must have clicked in my brain when I read this tweet:
If it was Monkey Wank Fever going around, rather than swine flu, I think the national mood would be a lot more buoyant.
Graham Linehan
I knew that I had some code sitting around from playing with the Google Ajax Search API. Within a [...]]]></description>
			<content:encoded><![CDATA[<p>I think something must have clicked in my brain when I read this tweet:</p>
<blockquote><p>If it was Monkey Wank Fever going around, rather than swine flu, I think the national mood would be a lot more buoyant.</p>
<p><cite><a href="http://twitter.com/Glinner/status/1657766763">Graham Linehan</a></cite></p></blockquote>
<p>I knew that I had some code sitting around from playing with the Google Ajax Search API. Within a few minutes I&#8217;d cobbled together a simple text-replacement for search results to see if Monkey Wank Fever really did lighten the mood.</p>
<p><a href="http://dev.webdeveloper2.com/iamaswine.htm"><img class="aligncenter size-large wp-image-1053" title="Monkey Wank Fever News" src="http://webdeveloper2.com/wp-content/uploads/2009/05/monkeywankfever-450x356.png" alt="Monkey Wank Fever News" width="450" height="356" /></a></p>
<p>I think it did, but then I have a twisted sense of humor sometimes.</p>
<p>One upshot of this is that I realised just how easy and useful the <a href="http://code.google.com/apis/ajaxsearch/">Google AJAX Search API</a> can be.</p>
<p>To include the API loader, a single script call is added into the page:</p>
<pre class="brush: xml;">
&lt;script src=&quot;http://www.google.com/jsapi?key=[Insert API Key]&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt; 
</pre>
<p>then by following the API documentation and examples, it&#8217;s quite easy to build a search query with a customised output.</p>
<pre class="brush: jscript;">
google.load(&quot;search&quot;, &quot;1&quot;);
var webSearch;
google.setOnLoadCallback(wOnLoad);

function wOnLoad() {
    webSearch = new google.search.WebSearch();
    webSearch.setResultSetSize( google.search.Search.SMALL_RESULTSET );
    webSearch.setSearchCompleteCallback(this, webSearchComplete, null);
    webSearch.execute(&quot;swine-flu or \&quot;swine flu\&quot;&quot;);
}
 
function webSearchComplete() {
    if (webSearch.results &amp;&amp; webSearch.results.length &gt; 0) {
        var contentDiv = document.getElementById('webresults');
        contentDiv.innerHTML = '';
        var results = webSearch.results;
        for (var i = 0; i &lt; webSearch.results.length; i++) {
            var result = results[i];
            var resContainer = document.createElement('div');
            var title = document.createElement('h3');
            title.innerHTML = result.titleNoFormatting.replace( /swine/ig, 'Monkey').replace( /influenza|flu/ig, 'Wank Fever').replace( /H1N1/ig, 'MNK3Y');
            var content = document.createElement('div');
            content.setAttribute('class', 'content');
            content.innerHTML = result.content.replace( /swine/ig, 'Monkey').replace( /influenza|flu/ig, 'Wank Fever').replace( /H1N1/ig, 'MNK3Y');
            resContainer.appendChild(title);
            resContainer.appendChild(content);
            contentDiv.appendChild(resContainer);
        }
    }
}
</pre>
<p>It may be in bad taste, but I feel like I&#8217;ve added to my arsenal of web weapons &#8211; sometimes you just can&#8217;t work on something without a goal to aim for. Aimless testing of the AJAX Search API had left me cold, but this silly little project made me sit up and pay attention to what I was doing.</p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/05/swine-flu-google-fu-monkey-wank-fever/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Social Media Stories</title>
		<link>http://webdeveloper2.com/2009/04/social-media-stories/</link>
		<comments>http://webdeveloper2.com/2009/04/social-media-stories/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 16:27:12 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[Social Networks]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=1044</guid>
		<description><![CDATA[I stumbled across this presentation from Seth Goldstein via Kyle Lacy&#8217;s blog. The information presented here is very valid for anybody working in social media, whether PR and marketing or application development. It&#8217;s also presented in a fun and attractive way, the designer in me fully approves, well done Seth.
Social Media Stories    
View more presentations from [...]]]></description>
			<content:encoded><![CDATA[<p>I stumbled across this presentation from <a href="http://www.slideshare.net/sethgoldstein">Seth Goldstein</a> via <a href="http://kylelacy.com/a-brilliant-social-media-presentation/">Kyle Lacy&#8217;s blog</a>. The information presented here is very valid for anybody working in social media, whether PR and marketing or application development. It&#8217;s also presented in a fun and attractive way, the designer in me fully approves, well done <a href="http://twitter.com/seth">Seth</a>.</p>
<div id="__ss_1311049" style="width: 425px; text-align: left;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="Social Media Stories" href="http://www.slideshare.net/sethgoldstein/social-media-stories-1311049?type=powerpoint">Social Media Stories</a><object width="425" height="355" data="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=socialmediastories-4-16-090418221038-phpapp01&amp;rel=0&amp;stripped_title=social-media-stories-1311049" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=socialmediastories-4-16-090418221038-phpapp01&amp;rel=0&amp;stripped_title=social-media-stories-1311049" /><param name="allowfullscreen" value="true" /></object>    </p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/sethgoldstein">Seth Goldstein</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/04/social-media-stories/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Analytics API Launched!</title>
		<link>http://webdeveloper2.com/2009/04/google-analytics-api-launched/</link>
		<comments>http://webdeveloper2.com/2009/04/google-analytics-api-launched/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 09:07:12 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Analytics]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=1040</guid>
		<description><![CDATA[I ranted about the lack of an API for Google Analytics back in November last year, now at last we have an easier way to use our analytics data.
A Google Analytics API has long been one of our most widely anticipated features. Today we&#8217;re pleased to announce that the Google Analytics Data Export API beta [...]]]></description>
			<content:encoded><![CDATA[<p>I ranted about the lack of an API for Google Analytics <a href="http://webdeveloper2.com/2008/11/why-doesnt-google-analytics-have-an-api/">back in November</a> last year, now at last we have an easier way to use our analytics data.</p>
<blockquote><p>A Google Analytics API has long been one of our most widely anticipated features. Today we&#8217;re pleased to announce that the Google Analytics Data Export API beta is now publicly available to all Analytics users!</p>
<p>What&#8217;s so exciting about an API? The API will allow developers to extend Google Analytics in new and creative ways that benefit developers, organizations and end users. Large organizations and agencies now have a standardized platform for integrating Analytics data with their own business data. Developers can integrate Google Analytics into their existing products and create standalone applications that they sell. Users could see snapshots of their Analytics data in developer created dashboards and gadgets. Individuals and business owners will have opportunities to access their Google Analytics information in a variety of new ways.</p></blockquote>
<p>via <a href="http://analytics.blogspot.com/2009/04/attention-developers-google-analytics.html">Google Analytics Blog: Web Analytics Tips &amp; Tricks: Attention Developers: Google Analytics API Launched!</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/04/google-analytics-api-launched/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Twitter&#8217;s new web interface</title>
		<link>http://webdeveloper2.com/2009/04/twitters-new-web-interface/</link>
		<comments>http://webdeveloper2.com/2009/04/twitters-new-web-interface/#comments</comments>
		<pubDate>Fri, 17 Apr 2009 13:36:22 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Interface]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[Summize]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=1028</guid>
		<description><![CDATA[I was setting up the Twitter account for a new project which I&#8217;m working on (more about that some other time) when I realised that the Twitter page looked a little different.
It seems that the real-time search capability which Twitter purchased with the aquisition of Summize is now being integrated into the main user interface. 
The [...]]]></description>
			<content:encoded><![CDATA[<p>I was setting up the Twitter account for <a href="http://twitter.com/unmasker">a new project</a> which I&#8217;m working on (more about that some other time) when I realised that the Twitter page looked a little different.</p>
<p>It seems that the real-time search capability which Twitter purchased with the <a href="http://www.techcrunch.com/2008/07/15/confirmed-twitter-acquires-summize-search-engine/">aquisition of Summize</a> is now being integrated into the main user interface. </p>
<p>The new sidebar features a search input, the results of which are displayed in the main body of the page. Searches can be saved so that they become available via a single click in the sidebar.</p>
<p>There is also a trending topics section so that you can see the most popular topics of conversation.</p>
<p style="text-align: center;"><a class="thickbox" title="New Twitter Interface" href="http://webdeveloper2.com/wp-content/uploads/2009/04/newtwitter.png"><img class="aligncenter size-large wp-image-1029" title="new Twitter interface" src="http://webdeveloper2.com/wp-content/uploads/2009/04/newtwitter-450x494.png" alt="newtwitter" width="450" height="494" /></a></p>
<p>The Saved Searches, Trending Topics and Following sections can all be collapsed to clean up the sidebar when they&#8217;re not required.</p>
<p><strong>Speculation:</strong> It could be that Twitter are trying to win back users from third-party Twitter apps. Increasing their pageviews in preparation for paid advertising?</p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/04/twitters-new-web-interface/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Handy WordPress hack &#8211; changing javascript library location</title>
		<link>http://webdeveloper2.com/2009/04/handy-wordpress-hack-changing-javascript-library-location/</link>
		<comments>http://webdeveloper2.com/2009/04/handy-wordpress-hack-changing-javascript-library-location/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 08:00:23 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Lab]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[optimisation]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=1017</guid>
		<description><![CDATA[Here&#8217;s a little hack I worked out to solve a dilemma that didn&#8217;t appear to be particularly well documented.
My problem was that I needed to use jQuery 1.3 for some script but the default version in Wordpress 2.7 is v1.2.6. It also makes sense to load the library from a common source such as the [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a little hack I worked out to solve a dilemma that didn&#8217;t appear to be particularly well documented.</p>
<p>My problem was that I needed to use <a href="http://jquery.com/">jQuery 1.3</a> for some script but the default version in Wordpress 2.7 is v1.2.6. It also makes sense to load the library from a common source such as the Google Ajax Libraries API store which increases the chances of the site visitor already having a cached version of that file in their browser (decreasing the page load cost and consequently the page load time). Simply adding the script tag to the page header works, but any plugins or other WordPress functions which require jQuery will load the default copy of jQuery in addition to the one that you have added.</p>
<h2>Get a handle on it</h2>
<p>After digging around in the <a href="http://codex.wordpress.org">Wordpress Codex</a> and some other helpful blogs I managed to get to grips with the in-built system for loading javascript files.</p>
<p>The way it works is that WordPress registers script libraries against defined <em>&#8216;handles&#8217;</em>. In this example I&#8217;m replacing the default registration for the <em>jquery</em> handle with version 1.3.2 loaded from the Google Ajax Libraries API store.</p>
<p>In my Theme Functions script (<em>functions.php</em>) I added these two simple lines of code.</p>
<pre class="brush: php;">
wp_deregister_script( 'jquery' ); 
wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js', false, '1.3.2' ); 
</pre>
<p><strong>wp_deregister_script</strong> drops the default script location for the jQuery library and releases the &#8216;jquery&#8217; handle. <strong>wp_register_script</strong> assigns a new script location to the jquery handle. this function has no effect if the handle being used is already registered, hence the use of wp_deregister_script beforehand.</p>
<p>Now anything which uses the Jquery library as a dependancy will use the new version (providing it has been coded using the <a href="http://codex.wordpress.org/Function_Reference/wp_enqueue_script">wp_enqueue_script</a> function) e.g.<br />
to load a jquery plugin in a theme template file such as the page header use:</p>
<pre class="brush: php;">
&lt;?php wp_enqueue_script(&quot;jqueryplugin&quot;, &quot;/wp-content/themes/mytheme/jqueryplugin.js&quot;, array(&quot;jquery&quot;),&quot;1.0&quot;); ?&gt;
</pre>
<p>this will result in the page output:</p>
<pre class="brush: xml;">
&lt;script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js?ver=1.3.2'&gt;&lt;/script&gt;
&lt;script type='text/javascript' src='http://mydomain/wp-content/themes/mytheme/jqueryplugin.js?ver=1.0'&gt;&lt;/script&gt;
</pre>
<p>This example only replaces the jquery definition, WordPress includes <a href="http://codex.wordpress.org/Function_Reference/wp_enqueue_script#Default_scripts_included_with_WordPress">a number of common javascript libraries</a>, many of which could benefit from this treatment.</p>
<h2>Warning Note</h2>
<p>Replacing the default version of a Javascript library could lead to errors in other scripts which depend on that library &#8211; always test thoroughly.<br />
The default WordPress script loads jQuery in compatibility mode, to use jQuery alongside other libraries, you will need to <a href="http://docs.jquery.com/Using_jQuery_with_Other_Libraries">adjust your scripts to enable compatibility</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/04/handy-wordpress-hack-changing-javascript-library-location/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>15 Social Media Discovery Tools</title>
		<link>http://webdeveloper2.com/2009/04/15-social-media-discovery-tools/</link>
		<comments>http://webdeveloper2.com/2009/04/15-social-media-discovery-tools/#comments</comments>
		<pubDate>Sat, 11 Apr 2009 23:22:10 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[discovery]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[social media]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=783</guid>
		<description><![CDATA[One of the key activities in getting the most out of social media is finding relevant people, blogs, conversations, wikis, forums etc. This is a list of sites that will help to find those shiny needles in the giant haytstack of the web.
Unified Social Media Search
These sites aggregate search results from multiple sites and services.

SocialMention [...]]]></description>
			<content:encoded><![CDATA[<p>One of the key activities in getting the most out of social media is finding relevant people, blogs, conversations, wikis, forums etc. This is a list of sites that will help to find those shiny needles in the giant haytstack of the web.</p>
<h2>Unified Social Media Search</h2>
<p>These sites aggregate search results from multiple sites and services.</p>
<ul>
<li>SocialMention &#8211; <a href="http://socialmention.com/">http://socialmention.com/</a></li>
<li>WhosTalkin &#8211; <a href="http://www.whostalkin.com/">http://www.whostalkin.com/</a></li>
<li>SamePoint &#8211; <a href="http://samepoint.com/">http://samepoint.com/</a></li>
<li>Delver &#8211; <a href="http://www.delver.com/">http://www.delver.com/</a></li>
</ul>
<h2>Blog Directories and Search</h2>
<p>Directories are a good way to find blogs by category although search is usually a better indication of the relevance of a blog&#8217;s content.</p>
<ul>
<li>Blog Catalog - <a href="http://www.blogcatalog.com/">http://www.blogcatalog.com/</a></li>
<li>MyBlogLog - <a href="http://www.mybloglog.com/">http://www.mybloglog.com/</a></li>
<li>Twingly &#8211; <a href="http://www.twingly.com/">http://www.twingly.com/</a></li>
<li>Google Blogsearch &#8211; <a href="http://blogsearch.google.com/">http://blogsearch.google.com/</a></li>
<li>PostRank &#8211; <a href="http://www.postrank.com/">http://www.postrank.com/</a></li>
<li>Technorati &#8211; <a href="http://www.technorati.com/">http://www.technorati.com/</a></li>
</ul>
<h2>Twitter Directories</h2>
<p>These sites help you find Twitter users based on categories. The downside is that you can only find people who have added themselves to the directories but they can be a quick way to find relevant people.</p>
<ul>
<li>WeFollow &#8211; <a href="http://wefollow.com/">http://wefollow.com/</a></li>
<li>Just Tweet It &#8211; <a href="http://justtweetit.com/">http://justtweetit.com/</a></li>
<li>Twellow &#8211; <a href="http://www.twellow.com/">http://www.twellow.com/</a></li>
<li>TwitterLinkUp &#8211; <a href="http://www.twitterlinkup.com/">http://www.twitterlinkup.com/</a></li>
<li>TwitDir &#8211; <a href="http://twitdir.com/">http://twitdir.com/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/04/15-social-media-discovery-tools/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>Web agencies and their clients are getting it all wrong</title>
		<link>http://webdeveloper2.com/2009/03/web-agencies-and-their-clients-are-getting-it-all-wrong/</link>
		<comments>http://webdeveloper2.com/2009/03/web-agencies-and-their-clients-are-getting-it-all-wrong/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 12:00:57 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[agencies]]></category>
		<category><![CDATA[business process]]></category>
		<category><![CDATA[clients]]></category>
		<category><![CDATA[pitch]]></category>
		<category><![CDATA[proposal]]></category>
		<category><![CDATA[speculative work]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=921</guid>
		<description><![CDATA[It&#8217;s a bit of a confrontational title, but this is a bit of a confrontational post.
The disparity between what a client should get from their web agency and what they do get is all too often down to the established process of client brief / agency proposal. Paul Boag spoofed this situation with his tongue-in-cheek [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s a bit of a confrontational title, but this is a bit of a confrontational post.</p>
<div id="attachment_922" class="wp-caption aligncenter" style="width: 494px"><img class="size-full wp-image-922" title="digital agency / client relationship" src="http://webdeveloper2.com/wp-content/uploads/2009/03/4044495.png" alt="This is an all too common situation" width="484" height="266" /><p class="wp-caption-text">This is an all too common situation</p></div>
<p>The disparity between what a client <em><strong>should</strong></em> get from their web agency and what they <em><strong>do</strong></em> get is all too often down to the established process of client brief / agency proposal. Paul Boag spoofed this situation with his tongue-in-cheek blog post: <a href="http://boagworld.com/design/10_things_a_web_designer_would/">10 things a web designer would never tell you</a>. The fact that many people took the list seriously before seeing the joke is not so surprising considering that many people accept this way of working and allow it to continue.</p>
<h2>Clients! Listen up!</h2>
<p>In order for a web project to be as good as it can be, everybody should be playing to their strengths. An insurance company employing a web agency to build a site to their own spec is going to end up with a site that is only as good as one built by an insurance company. They might as well ask a web designer to write insurance policies for them.</p>
<h3>Why buy a dog and bark yourself?</h3>
<p>A digital agency doesn&#8217;t need to see a detailed, page-by-page breakdown of how you think a social network should work. It&#8217;s their job to understand the ins-and-outs of these things and at the end of the day, there&#8217;s a good chance that the world at large isn&#8217;t interested in your car insurance based social network &#8211; they&#8217;re all having too much fun poking each other on <a href="http://www.facebook.com">Facebook</a> and filling out questionaires to find out which <a href="http://en.wikipedia.org/wiki/Family_guy">Family Guy</a> character they are.</p>
<h3>Here&#8217;s an Analogy</h3>
<p>Let&#8217;s take the same situation into a different industry; imagine that you want a bespoke suit tailored for you. Here are two possible options:</p>
<ol>
<li>You send the tailor a set of estimated measurements along with instruction on what type of fabric to use and how to sew the suit together, then ask him to make you six different variations of the suit on the understanding that you would pay him for the one that you liked best.</li>
<li>You could meet with the tailor, let him take your measurements, explain what you wanted the suit for and then allow him to guide your decisions based on his experience.</li>
</ol>
<p>Unless you are a very strange individual, you will most probably have, quite rightly, dismissed option 1 as stupid and ridiculous.</p>
<p>Now in your head, replace that suit with your company website and the tailor with a web agency &#8230; done that? OK &#8211; hopefully option 1 still seems like a silly way to achieve the best results and yet:</p>
<p><strong>PEOPLE CONTINUE TO DO THIS &#8211; EACH. AND. EVERY. DAY.</strong></p>
<p>As the inimitable Jeffrey Zelman stated:</p>
<p><a href="http://twitter.com/zeldman/status/1387830925"><img class="aligncenter size-full wp-image-967" title="Spec = asking the world to have sex with you and promising dinner date to one lucky winner." src="http://webdeveloper2.com/wp-content/uploads/2009/03/zeldman_spec.png" alt="Spec = asking the world to have sex with you and promising dinner date to one lucky winner." width="600" height="302" /></a></p>
<h2>Agencies, you are just as bad</h2>
<p>This isn&#8217;t just the client&#8217;s fault, in the analogy all but the worst possible tailor would have refused the work given option 1 and yet thousands of web agencies perpetuate this way of working. There seems to be an attitude that the client&#8217;s requests must be followed to the letter, no matter how time-consuming, expensive and ultimately, pointless they may be. Would it really be too risky to contact the potential client and explain that pitching ideas and designs on spec is, in the long run, going to be costly both in the quality of the work and more importantly that magic word money. </p>
<p>For example, if an agency spends £2000 on a pitch to client A, £2000 pounds on a pitch to client B and £2000 on a pitch to client C and then only wins the contract from client C. The budget for the project not only has to have the cost of the pitch deducted but in order for the agency to recoup sales costs, they must deduct the cost of all three pitches. For the client, by choosing to work with an agency who are willing to do the speculative design work, they are getting £6000 less work done than if they had chosen an agency who refused to provide design work as part of their pitch. For the agency, these additional cost constraints result in perhaps not being able to do the work to as high a standard as they would like, potentially leaving their client dissatisfied and unwilling to continue working with them.</p>
<p>As Paul Boag points out, <a href="http://boagworld.com/design/why_speculative_design_is_wron/">speculative design work is a really bad idea</a>, not only is it bad for the agency, it&#8217;s just as bad for the client.</p>
<h3>Swimming upstream</h3>
<p>We are working in an industry which is still comparatively youthful, one which is still evolving, an industry with constantly moving goalposts. Despite these changing conditions we continue to use the same business processes for no better reason than &#8220;it&#8217;s the way these things have always been done&#8221;. It&#8217;s so sad when web professionals see somebody become successful by &#8220;breaking the rules&#8221; and doing things differently, then after admiring those peoples&#8217; efforts, go back to doing the same things that they&#8217;ve been doing for years. </p>
<blockquote><p>It&#8217;s like swimming upstream, the moment you stop swimming, you start moving backwards.</p></blockquote>
<h2>How much time are we wasting?</h2>
<div>An example based on a real situation:</div>
<div>
<ul>
<li>The client tender document was 35 pages of detailed spec, probably representing several days of work</li>
<li>The internal meetings to discuss the spec and suggest solutions took up 2 man-days of time</li>
<li>The proposal document also weighed in at 30-40 pages, representing aproximately 2.5 days of work</li>
<li>The speculative designs that were sent with the proposal took 5 days to complete </li>
</ul>
</div>
<p>Amazingly, all of this time and effort was spent before the client and the agency sat down together to discuss the project. An investment of 2-3 weeks worth of work just to secure a meeting in which the real project could start to be discussed. Unfortunately, it&#8217;s hard for both the client and the agency to let go of this investment, even if the emerging project criteria prove the proposal to be unsuitable.</p>
<blockquote><p>I know it&#8217;s not the best solution but we have to do it this way because we spent a fortune on the pitch</p></blockquote>
<p>The key to reducing the amount of wasted time is to try and get to the talking face-to-face stage as quickly as possible, how that occurs is down to individual clients and agencies to figure out. Some possible suggestions are:</p>
<ul>
<li>Client spec/brief should be written in terms of what you want to achieve, rather than how you want to achieve it.</li>
<li>Agencies should explain clearly, the reasoning behind not producing speculative work.</li>
<li>Arrange a meeting in which the  client&#8217;s key stakeholders can talk with experienced agency production staff &#8211; no sales people, there will be time to barter over prices once there is a clear idea of what the best solutions are.</li>
</ul>
<p>To paraphrase Paul Boag once more:</p>
<blockquote><p>To request speculative [work] is to deny your own importance in the process.</p></blockquote>
<p>The same sentiment could be applied to the agencies who&#8217;s proposals consist of how they would implement the client&#8217;s specifications.</p>
<blockquote><p>By giving the client only what they&#8217;ve asked for, is to deny your own experience in the industry.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/03/web-agencies-and-their-clients-are-getting-it-all-wrong/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Online shopping with added cleverness &#8211; Woya</title>
		<link>http://webdeveloper2.com/2009/03/online-shopping-with-added-cleverness-woya/</link>
		<comments>http://webdeveloper2.com/2009/03/online-shopping-with-added-cleverness-woya/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 13:07:29 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Review]]></category>
		<category><![CDATA[online]]></category>
		<category><![CDATA[price comparison]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[shopping]]></category>
		<category><![CDATA[startup]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=927</guid>
		<description><![CDATA[I was recently invited to review a website, Woya.com &#8211; a consumer electronics shopping site. At first I didn&#8217;t really think that it was relevant and was going to politely decline, but I diligently went and took a look at the site expecting to see familiar price-comparison features. I was surprised to find something that [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently invited to review a website, <a href="http://www.woya.com/">Woya.com</a> &#8211; a consumer electronics shopping site. At first I didn&#8217;t really think that it was relevant and was going to politely decline, but I diligently went and took a look at the site expecting to see familiar price-comparison features. I was surprised to find something that is more like an online shopping analytics package, there is some very clever tech going on here which I felt was worth writing about.</p>
<h3>All the things that you <em>should</em> be doing when you shop online</h3>
<p><a class="thickbox" title="Woya Product Page" rel="woya" href="http://webdeveloper2.com/wp-content/uploads/2009/03/fireshot-capture-21.png"><img class="size-thumbnail wp-image-942 alignright" title="Woya Product Page" src="http://webdeveloper2.com/wp-content/uploads/2009/03/fireshot-capture-21-150x150.png" alt="Woya Product Page" width="150" height="150" /></a>Let&#8217;s face it, if you are a smart online shopper, you trawl different sites, compare prices look at availability etc. Most of us, however, are too lazy and just go straight to Amazon, ebay or whatever shopping site we prefer. Woya does all of that trawling for you and presents a wealth of information to help you make informed purchases. For every product it looks for retail, auction <em>AND</em> classified listings.</p>
<h3>Woya gives you easy access to all of the information</h3>
<p>For any product, you can see the current Retail, Auction and Classified listings available. You can see the product specifications, and related products and accessories. Very handily, there is a page to see all of the user reviews aggregated together with filters available for positive, negative, most helpfuland most recent.</p>
<p><a class="thickbox" title="Technical Specs" rel="woya" href="http://webdeveloper2.com/wp-content/uploads/2009/03/fireshot-capture-27.png"><img class="alignnone size-thumbnail wp-image-952" title="Technical Specs" src="http://webdeveloper2.com/wp-content/uploads/2009/03/fireshot-capture-27-150x150.png" alt="Technical Specs" width="150" height="150" /></a> <a class="thickbox" title="Related Products / Accessories" rel="woya" href="http://webdeveloper2.com/wp-content/uploads/2009/03/fireshot-capture-30.png"><img class="alignnone size-thumbnail wp-image-951" title="Related Products / Accessories" src="http://webdeveloper2.com/wp-content/uploads/2009/03/fireshot-capture-30-150x150.png" alt="Related Products / Accessories" width="150" height="150" /></a><br />
<a class="thickbox" title="Reviews" rel="woya" href="http://webdeveloper2.com/wp-content/uploads/2009/03/fireshot-capture-28.png"><img class="alignnone size-thumbnail wp-image-953" title="Reviews" src="http://webdeveloper2.com/wp-content/uploads/2009/03/fireshot-capture-28-150x150.png" alt="Reviews" width="150" height="150" /></a> <a class="thickbox" title="Compete" rel="woya" href="http://webdeveloper2.com/wp-content/uploads/2009/03/fireshot-capture-29.png"><img class="alignnone size-thumbnail wp-image-954" title="Compete" src="http://webdeveloper2.com/wp-content/uploads/2009/03/fireshot-capture-29-150x150.png" alt="Compete" width="150" height="150" /></a></p>
<p>The compete page seems like an interesting concept, comparing the current product with similar ones based on price and user rating.</p>
<h3>There&#8217;s more than just information</h3>
<p>Where Woya starts to get really clever is in the analytics based features. In addition to aggregating all of the published information, it also provides an overview of trending prices, availability and simple advice based on the analysis.</p>
<p><a class="thickbox" title="Retail Trend" rel="woya" href="http://webdeveloper2.com/wp-content/uploads/2009/03/fireshot-capture-23.png"><img class="alignnone size-thumbnail wp-image-948" title="Retail Trend" src="http://webdeveloper2.com/wp-content/uploads/2009/03/fireshot-capture-23-150x150.png" alt="Retail Trend" width="150" height="150" /></a> <a class="thickbox" title="Classified Listing Trend" rel="woya" href="http://webdeveloper2.com/wp-content/uploads/2009/03/fireshot-capture-26.png"><img class="alignnone size-thumbnail wp-image-947" title="Classified Listing Trend" src="http://webdeveloper2.com/wp-content/uploads/2009/03/fireshot-capture-26-150x150.png" alt="Classified Listing Trend" width="150" height="150" /></a> <br />
<a class="thickbox" title="Auction Trends" rel="woya" href="http://webdeveloper2.com/wp-content/uploads/2009/03/fireshot-capture-25.png"><img class="alignnone size-thumbnail wp-image-946" title="Auction Trends" src="http://webdeveloper2.com/wp-content/uploads/2009/03/fireshot-capture-25-150x150.png" alt="Auction Trends" width="150" height="150" /></a> <a class="thickbox" title="Savings Tip" rel="woya" href="http://webdeveloper2.com/wp-content/uploads/2009/03/savingstip.png"><img class="alignnone size-thumbnail wp-image-945" title="Savings Tip" src="http://webdeveloper2.com/wp-content/uploads/2009/03/savingstip-150x150.png" alt="Savings Tip" width="150" height="150" /></a></p>
<h3>Save yourself some effort</h3>
<p><a class="thickbox" title="DealDigger" rel="woya" href="http://webdeveloper2.com/wp-content/uploads/2009/03/fireshot-capture-32.png"><img class="size-thumbnail wp-image-928 alignright" title="Woya.com DealDigger" src="http://webdeveloper2.com/wp-content/uploads/2009/03/fireshot-capture-32-150x150.png" alt="DealDigger" width="150" height="150" /></a>If you are looking to buy a specific product at no more than a certain price, the DealDigger function is a great idea. It lets you set up the parameters for your target price, new or used condition and whatever combination you want of retail, auction or classified listings. DealDigger will then send you an email when it finds the product with your matching criteria. You will be free to get on with your life safe in the knowledge that Woya is doing all of the hard work for you.</p>
<h3>Social Shopping</h3>
<p>One aspect of the site which is easy to overlook is the integrated social networking. It&#8217;s likely that these features will become more useful when the site has a large community of active users.  As far as I could tell, the idea is that you can list items that you own, recommend or want. For any product, you&#8217;ll be able to see if other site users own, want or recommend that item. Hopefully you would be able to contact another site user who owns the item to ask them specific questions about it but that is just speculation on my behalf.</p>
<h2>Interview with the founder</h2>
<p>I asked Qiang Sun, the founder and Chief Code Monkey for Woya, some questions about how the site came together.</p>
<h3>What is the biggest technical challenge in building / running the site?</h3>
<blockquote><p>A couple of things come to my mind. </p>
<p>One of the unique features of the site is to incorporate data from unstructured data sources (e.g. classified listings) in the price comparison. The listings need to be properly categorized under products in our catalog. This requires that the system be smart enough to &#8220;understand&#8221; what product each listing describes. It is an extremely difficult problem to solve not only because there are many different ways to describe the same product but also that related products may share similar descriptions. Furthermore a seller may intentionally use less straightforward description in order to make his listing stand out.  We have developed sophisticated algorithms using natural language processing and statistical analysis to successfully tackle these issues. What we are able to achieve is pretty amazing IMHO.  As a result, our users can access a wider range of data sources during price comparison and set up alerts to get notified when the desired products show up on sites such as Craigslist.  No other website is able to offer similar services as far as we know. The result from such an AI system can never be accurate 100% of the time and we are constantly making improvements.</p>
<p>Running the site on a small number of second-hand Dell servers is also challenging. The system is built on dynamic data. Millions of deals for hundreds of thousands of product need to be refreshed at least once a day from a dozen different data sources. Scores of crawlers and analyzers are running around the o&#8217;clock to get the job. Since I am the main developer of the site and the sole IT person, it can be difficult at times. But this is more of a resource problem that is common among all early-stage startups.</p></blockquote>
<h3>There is so much information on view and so many features, what sort of process did you go through in order to come up with the site design?</h3>
<blockquote><p>Well, the short answer is that I wished we had spent a bit more time streamlining the design of the site <img src='http://webdeveloper2.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />   The site itself is only about one third of the work as we have complex backend/middle tier which was under development before the site was designed.  There is sort of a master plan &#8211; a blueprint based on how I envision the ultimate shopping site should be.  But there are so many things we want to build but so little time/resource, we decided to focus on price analysis for version 1.0.  The major sections of the site and the navigations between them were nailed down over the course of only a few days.  A freelance designer helped with the visual design of the site while we continued working on the backend and middle tier.  The UI design went over two quick iterations based on feedback we solicited from friends and family.  The initial HTML slicing was done by a 3rd party after which we started to put all the pieces together.  Due to the team&#8217;s lack of web development experience, the prototype of the site relied heavily on native ASP.net controls. Over the past few months these controls were replaced with [custom] controls and more Ajax features.</p></blockquote>
<h3>Are there any specific changes or additions that you are working on for the site?</h3>
<blockquote><p>A key focus for the next couple of month is to re-organize/re-skin certain sections of the site.  The site is meant to help user analyze shopping related data with ease but during the course of development we did not do a good enough job staying with this principle.  As a result, the UX was compromised.  Information is not always presented in an intuitive manner and the complexity also leads to confusion for some users.  A set of changes will be introduced in the coming months to address this problem. </p></blockquote>
<h3>Has user feedback shaped any decisions in the development of the site, and were there any surprises?</h3>
<blockquote><p>Yes, absolutely. Since the beta went online a few months ago, we have received lots of feedback especially in the area of the UX.  A large percentage of the feedback is related to the issue mentioned in answer to you previous question.  It is not a total surprise because we knew that things were rushed through during the design phase so it is inevitable that this kind of problem surfaces.</p></blockquote>
<h3>The Site is US only at the moment, do you have any plans to expand into other countries?</h3>
<blockquote><p>Not anytime soon. We plan to expand the product catalog to go beyond consumer electronics first.  And in parallel we plan to introduce data analysis in areas other than price.  International expansion will only be considered if we can build a successful business in the states first.</p></blockquote>
<p>It&#8217;s often the case that UI and UX can be somewhat neglected on projects that are heavily technology based and it&#8217;s good to see that this issue has been acknowledged and is being dealt with. The site does a good job of presenting the data available but as a developer, I&#8217;m comfortable with complex interfaces and I can see why less technical users may find some of the pages slightly overwhelming.</p>
<p>I wish Qiang every success with <a href="http://www.woya.com/">Woya</a> and hope that it won&#8217;t be too long before there&#8217;s a UK version available.</p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/03/online-shopping-with-added-cleverness-woya/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>New WordPress theme</title>
		<link>http://webdeveloper2.com/2009/03/new-wordpress-theme/</link>
		<comments>http://webdeveloper2.com/2009/03/new-wordpress-theme/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 20:44:39 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=911</guid>
		<description><![CDATA[I finally decided to go live with my new WordPress theme &#8211; it&#8217;s still something of a work in progress so expect changes on a regular basis.
The main design aims that I focussed on were:

Remove clutter to clarify the main content
Improve readability
Retain essential page elements but keep the page clean as possible
use CSS to progressively [...]]]></description>
			<content:encoded><![CDATA[<p>I finally decided to go live with my new WordPress theme &#8211; it&#8217;s still something of a work in progress so expect changes on a regular basis.</p>
<p>The main design aims that I focussed on were:</p>
<ul>
<li>Remove clutter to clarify the main content</li>
<li>Improve readability</li>
<li>Retain essential page elements but keep the page clean as possible</li>
<li>use CSS to progressively enhance the design for upscale browsers without losing usability in older or less capable ones</li>
</ul>
<p>I&#8217;m particularly pleased with the post footers,  The list of categories and tags, sharing buttons and previous/next post links always seems like an unavoidable bundle of junk so I decided to minimise it until required.</p>
<div id="attachment_912" class="wp-caption aligncenter" style="width: 428px"><img class="size-full wp-image-912" title="Postfooter" src="http://webdeveloper2.com/wp-content/uploads/2009/03/postfooter.png" alt="links-on-demand" width="418" height="95" /><p class="wp-caption-text">links-on-demand</p></div>
<p>From a technical standpoint I wanted to create a theme virtually from scratch in order to learn more about how WordPress works and to have a theme in which there are no mysterious bits of code that I&#8217;m unfamiliar with. As a bit of a PHP newbie, it&#8217;s been a great way to start working with the language.</p>
<h3>Further work</h3>
<p>There are a few things which I&#8217;ll be trying to do as I go on</p>
<ul>
<li>Microformats &#8211; The markup has so far been thrown together fairly haphazardly, I&#8217;ll be trying to clean it up and insert proper microformat markup</li>
<li>Image optimisation &#8211; I think I need to do something to reduce image sizes for the post headers.</li>
<li>Stealth Widgets &#8211; I have a spark of an idea for including more sidebar content without cluttering the design</li>
</ul>
<p>I&#8217;d appreciate any feedback, particularly as there are many good WordPress designers out there who&#8217;s advice I value.</p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/03/new-wordpress-theme/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Building a YouTube Dialog</title>
		<link>http://webdeveloper2.com/2009/03/building-a-youtube-dialog/</link>
		<comments>http://webdeveloper2.com/2009/03/building-a-youtube-dialog/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 16:38:52 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Lab]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[search videos]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[user interface]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=892</guid>
		<description><![CDATA[For the past couple of weeks, I&#8217;ve been working with the YouTube API in order to build some new functionality into Ackura PressRoom. The aim was to build a dialog to browse or search videos from YouTube in order to select one for inclusion in a Social Media Release.
I started by building a quick wireframe [...]]]></description>
			<content:encoded><![CDATA[<p>For the past couple of weeks, I&#8217;ve been working with the <a href="http://code.google.com/apis/youtube/overview.html">YouTube API</a> in order to build some new functionality into <a href="http://pressroom.ackura.com">Ackura PressRoom</a>. The aim was to build a dialog to browse or search videos from <a href="http://www.youtube.com">YouTube</a> in order to select one for inclusion in a <a href="http://vimeo.com/2759273" target="_blank">Social Media Release</a>.</p>
<p>I started by building a quick wireframe of the dialog using <a href="http://www.balsamiq.com/products/mockups">Balsamiq Mockups</a> (a very handy little tool which I intend to review properly soon).</p>
<div id="attachment_893" class="wp-caption aligncenter" style="width: 460px"><a href="http://webdeveloper2.com/wp-content/uploads/2009/03/videobrowser.png"><img class="size-large wp-image-893" title="videobrowser wireframe" src="http://webdeveloper2.com/wp-content/uploads/2009/03/videobrowser-450x170.png" alt="The wireframe built with Balsamiq Mockups" width="450" height="170" /></a><p class="wp-caption-text">The wireframe built with Balsamiq Mockups</p></div>
<p>The Interface was built in ASP.Net and consists of three main parts:</p>
<ol>
<li><strong>The Dialog Framework page</strong> &#8211; this is the scaffold for the dialog which contains all of the specific javascript and CSS for the dialog</li>
<li><strong>The List/Search script</strong> &#8211; used to retrieve the video listings in the left-hand side of the dialog.</li>
<li><strong>The Video Preview script</strong> &#8211; used to retrieve the details for a specific video and load it into the preview area on the right-hand side of the dialog</li>
</ol>
<p>I used <a href="http://jquery.com/">jQuery</a>&#8217;s Ajax capabilities to ensure that, for the user, the experience of using the dialog is as smooth and intuitive as possible. <a href="http://code.google.com/p/google-gdata/">Google&#8217;s .Net API wrapper</a> provided the tools that I needed to fetch the data from YouTube.</p>
<div id="attachment_895" class="wp-caption aligncenter" style="width: 460px"><a href="http://webdeveloper2.com/wp-content/uploads/2009/03/fireshot-capture-2.png"><img class="size-large wp-image-895" title="YouTube browser dialog" src="http://webdeveloper2.com/wp-content/uploads/2009/03/fireshot-capture-2-450x302.png" alt="The completed dialog" width="450" height="302" /></a><p class="wp-caption-text">The completed dialog</p></div>
<p>As you can see very few changes needed to be made between the original wireframe and the completed dialog. The numbered paging was dropped due to the fact that YouTube only returns an estimation of the number of results. I also added in a cancel button to allow the dialog to be closed without having selected a video to include.</p>
<p>There are more details on how the dialog works over on the <a href="http://ackura.com/2009/03/youtube-integration-coming-soon/">Ackura blog</a> and I&#8217;ll try to put together a post detailing some of the more technical aspects of how I built this soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/03/building-a-youtube-dialog/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>My 4 most wanted iPhone features</title>
		<link>http://webdeveloper2.com/2009/02/my-4-most-wanted-iphone-features/</link>
		<comments>http://webdeveloper2.com/2009/02/my-4-most-wanted-iphone-features/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 13:55:34 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Bluetooth]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[media-capable phone]]></category>
		<category><![CDATA[streaming video]]></category>
		<category><![CDATA[user interface]]></category>
		<category><![CDATA[wireless stereo headsets]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=886</guid>
		<description><![CDATA[Don&#8217;t get me wrong, I love my iPhone and wouldn&#8217;t be without it but it&#8217;s frustrating sometimes to know that despite it&#8217;s myriad capabilities, there&#8217;s still more it could do. The fact that people are already managing to do this stuff having jailbroken their iPhones leads me to believe that Apple is witholding this stuff [...]]]></description>
			<content:encoded><![CDATA[<p>Don&#8217;t get me wrong, I love my iPhone and wouldn&#8217;t be without it but it&#8217;s frustrating sometimes to know that despite it&#8217;s myriad capabilities, there&#8217;s still more it could do. The fact that people are already managing to do this stuff having jailbroken their iPhones leads me to believe that Apple is witholding this stuff possibly due to brokering exclusive licences with other vendors.</p>
<h3>1. Copy / Paste</h3>
<p>This has to be the most obvious omission, something that is so ubiquitous in computer GUIs, we take it for granted. The main issue seems to be how to implement copy/paste using the multitouch interface. For jailbroken iPhones, there are a few solutions available including <a href="http://lifehacker.com/5136011/clippy-brings-copypaste-to-jailbroken-iphones-everywhere-except-safari">Clippy [via LifeHacker]</a>.</p>
<h3>2. Bluetooth Input</h3>
<p><a href="http://webdeveloper2.com/wp-content/uploads/2009/02/macally_iphone_keyboard.jpg"><img class="alignright size-thumbnail wp-image-887" title="macally_iphone_keyboard" src="http://webdeveloper2.com/wp-content/uploads/2009/02/macally_iphone_keyboard-150x150.jpg" alt="macally_iphone_keyboard" width="150" height="150" /></a>I really want my iPhone to be able to act as an ultra-portable laptop replacement, I&#8217;ve written blog posts using the touchscreen keyboard before now but it&#8217;s a long and arduous process. A physical keyboard would be the ideal solution to stop me enviously eyeing up those nifty little netbooks which are all the rage these days. <a href="http://www.avalive.com/MacAlly/BTKeyMini/43579/productDetail.php">Macally have just the device lined up</a> and ready to go, just as soon as Apple pull their finger out and enable bluetooth input; What secret dealings are preventing this from happening I wonder?</p>
<h3>3. A2DP Stereo Bluetooth</h3>
<p>Why is it that what is supposedly the &#8220;funnest&#8221;, musical, media-capable phone available, not include A2DP support for <a href="http://www.amazon.co.uk/Sony-DRBT21GB-Stereo-Bluetooth-Headphones/dp/B000QIMQAI%3FSubscriptionId%3D02E5W5871AJF7PMMMS82%26tag%3Dwebdeve20-21%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB000QIMQAI">wireless stereo headsets</a>. This is another example of a feature which is becoming commonplace in other devices and the iPhone contains the hardware to support it, yet <a href="http://a2dp.info/Front-Page/A2DP-Why-Disgraced-in-iPhone.html">Apple have yet to unlock the capability</a>. The only solution at the moment is to buy <a href="http://www.amazon.co.uk/iO-Charge-iPhone-Bluetooth-Adaptor/dp/B001JFF9MO%3FSubscriptionId%3D02E5W5871AJF7PMMMS82%26tag%3Dwebdeve20-21%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB001JFF9MO">an external A2DP transmitter</a>.</p>
<h3>4. Video</h3>
<p>Live streaming video from a mobile device to the internet is becoming an increasingly useful tool thanks to services such as <a href="http://www.qik.com">QIK</a>. The guys from QIK have managed to <a href="http://qik.com/blog/206/qik-announces-iphone-3g-support">enable the service on the iPhone</a> but again it requires the phone to be jailbroken. The framerate isn&#8217;t so great but it&#8217;s still a useful feature, the one which my Nokia owning friends still use as a get-out-of-jail-free-card whenever the iPhone envy builds up.</p>
<p><object width="425" height="319" data="http://www.qik.com/swfs/qik_player.swf" type="application/x-shockwave-flash"><param name="id" value="qik_player" /><param name="align" value="middle" /><param name="allowScriptAccess" value="sameDomain" /><param name="allowFullScreen" value="false" /><param name="quality" value="high" /><param name="wmode" value="transparent" /><param name="bgcolor" value="#333333" /><param name="FlashVars" value="userlock=true&amp;streamname=1432f51e4efa481e8200d223e44b943d&amp;vid=157462&amp;safelink=michael" /><param name="src" value="http://www.qik.com/swfs/qik_player.swf" /><param name="name" value="qik_player" /><param name="flashvars" value="userlock=true&amp;streamname=1432f51e4efa481e8200d223e44b943d&amp;vid=157462&amp;safelink=michael" /><param name="allowfullscreen" value="false" /></object></p>
<p>I feel torn between annoyance that Apple is holding out on us and happiness that even without these features, my iPhone is still the best gadget I own.</p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/02/my-4-most-wanted-iphone-features/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Review: AIPTEK Slim Tablet 600U</title>
		<link>http://webdeveloper2.com/2009/02/review-aiptek-slim-tablet-600u/</link>
		<comments>http://webdeveloper2.com/2009/02/review-aiptek-slim-tablet-600u/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 13:00:17 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Review]]></category>
		<category><![CDATA[Aiptek 600U Slim]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[drawing]]></category>
		<category><![CDATA[good quality product]]></category>
		<category><![CDATA[graphic]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[input]]></category>
		<category><![CDATA[tablet]]></category>
		<category><![CDATA[XP Pro]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=852</guid>
		<description><![CDATA[I&#8217;ve never used a drawing tablet, ever. I&#8217;ve always thought that I might like one but it seemed like an unnessecary expense when my mouse-wielding skills are if not prodigious, then at least acceptable. Last month, I was gifted some Amazon vouchers and instead of buying lots of books (my usual vice) I spotted the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve never used a drawing tablet, ever. I&#8217;ve always thought that I might like one but it seemed like an unnessecary expense when my mouse-wielding skills are if not prodigious, then at least acceptable. Last month, I was gifted some Amazon vouchers and instead of buying lots of books (my usual vice) I spotted the <a href="http://www.amazon.co.uk/Aiptek-600U-Slim-Tablet/dp/B000UCHF38%3FSubscriptionId%3D02E5W5871AJF7PMMMS82%26tag%3Dwebdeve20-21%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB000UCHF38">Aiptek 600U Slim Tablet Premium II</a>, read the reviews and ordered the thing before I could talk myself out of it.</p>
<h2>First Impressions</h2>
<p><a href="http://www.amazon.co.uk/Aiptek-600U-Slim-Tablet/dp/B000UCHF38%3FSubscriptionId%3D02E5W5871AJF7PMMMS82%26tag%3Dwebdeve20-21%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB000UCHF38"><img class="alignright" src="http://ecx.images-amazon.com/images/I/21V7607jSaL._SL160_.jpg" alt="" width="160" height="160" /></a>Upon opening the box and taking out the tablet, my first reaction was &#8220;Great Googa-Mooga!, that&#8217;s a slim tablet&#8221;. The main work surface is only 5mm thick and a narrow bar at the top that&#8217;s no more than 9mm thick, this has a very low desk profile. The pen is quite light but feels comfortable in the hand although the buttons seem a little awkward &#8211; that may be my inexperience with such things showing through.<span id="more-852"></span></p>
<h2>Setting Up</h2>
<p>I&#8217;m using Windows XP Pro so I installed the software included in the package, it wasn&#8217;t too clear whether the macro-key manager also installed the drivers but it&#8217;s an inobtrusive piece of software which runs in the system tray and allows you to assign actions to any of the x unused macro-keys positioned to either side of the tablet. I then fired up Photoshop and, as if by magic, the tablet worked perfectly.</p>
<h2>Working with it</h2>
<p>I&#8217;m really enjoying working with this, one thing that I love is the ability to sketch, not something that&#8217;s easily achieved using a mouse. The 1024 levels of pressure sensitivity really let you start ghosting lines in before committing to stronger strokes.</p>
<p><a href="http://www.flickr.com/photos/techn0tic/3252056630/"><img class="aligncenter size-full wp-image-879" title="snowman" src="http://webdeveloper2.com/wp-content/uploads/2009/02/sketchman.png" alt="snowman" width="450" height="250" /></a></p>
<p>The nib of the pen is slightly sprung which feels good if, like me, you are happy to doodle with a ball-point pen, the package includes a couple of spare nibs too (which I&#8217;ll probably have lost by the time I need them &#8211; a little storage compartment in the tablet would have been useful). There is also a neat little pen-stand included in the package, not sure if I&#8217;d rather have something that would keep the pen with the tablet when not in use but that&#8217;s a matter of opinion.</p>
<p>The workable area of the tablet is approximately A4 size (210mm × 297mm) with about 20mm along the top, left and right edges reserved for the macro keys. This area doesn&#8217;t feel restrictive and is impressive considering the low cost of the device.</p>
<p>I can&#8217;t find fault with the responsiveness of the tablet, in the example above (completed in about 10 minutes) you can see that I&#8217;ve scribbled extensively and never found myself waiting for the action on screen to catch up with my pen movements on the pad.</p>
<p>The tablet detects the pen from about 10mm away so it&#8217;s not too fiddly a job to move the pointer into a position without touching the surface.</p>
<h2>Problems</h2>
<p>I currently only have one criticism, the majority of the macro-key assignments are fixed, I don&#8217;t have a problem with the basic functions such as copy, paste, undo etc. but I don&#8217;t need Outlook or Powerpoint on there as I rarely (or never in the case of Outlook) use them.</p>
<h2>In Conclusion</h2>
<p>If like me, you&#8217;ve never used a tablet before, I can&#8217;t fault it. If you are an experienced tablet user, you might want to try one out first but at the price, it&#8217;s a surprisingly good quality product.</p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/02/review-aiptek-slim-tablet-600u/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Development tip: color coding UI by deployment platform</title>
		<link>http://webdeveloper2.com/2009/02/development-tip-color-coding-ui-by-deployment-platform/</link>
		<comments>http://webdeveloper2.com/2009/02/development-tip-color-coding-ui-by-deployment-platform/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 12:50:11 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[user interface]]></category>
		<category><![CDATA[Web development]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=861</guid>
		<description><![CDATA[For anybody who&#8217;s working in web development, there often comes the situation where you have multiple deployments of an application. I my case the normal situation is to have a local working copy, a staging environment and a live environment.
I&#8217;m sure I&#8217;m not alone in having been in situations where I&#8217;ve made an update and [...]]]></description>
			<content:encoded><![CDATA[<p>For anybody who&#8217;s working in web development, there often comes the situation where you have multiple deployments of an application. I my case the normal situation is to have a local working copy, a staging environment and a live environment.</p>
<p>I&#8217;m sure I&#8217;m not alone in having been in situations where I&#8217;ve made an update and then sat refreshing the browser scratching my head as to why the update isn&#8217;t showing, only to realise that I&#8217;ve been looking at the live version rather than the development version of the app or site.</p>
<p>To avoid this confusion and to avoid the need for checking the address bar when checking edits, I&#8217;ve been using different color schemes for each deployment platform. This gives an instant visual indication of which version is being viewed.</p>
<p>In the following example from <a href="http://pressroom.ackura.com" target="_blank">Ackura PressRoom</a>, I did a quick search and replace in the CSS files for the app to change the standard color code for headings and links. I also switched the logo to add an additional label and to match the color scheme.</p>
<div id="attachment_865" class="wp-caption aligncenter" style="width: 460px"><img class="size-large wp-image-865" title="PressRoom Local" src="http://webdeveloper2.com/wp-content/uploads/2009/02/pr_local-450x216.png" alt="PressRoom Local" width="450" height="216" /><p class="wp-caption-text">Local development copy</p></div>
<p style="text-align: center;"><span id="more-861"></span></p>
<div id="attachment_863" class="wp-caption aligncenter" style="width: 460px"><img class="size-large wp-image-863" title="PressRoom Staging" src="http://webdeveloper2.com/wp-content/uploads/2009/02/pr_staging-450x216.png" alt="PressRoom Staging" width="450" height="216" /><p class="wp-caption-text">Staging environment</p></div>
<div id="attachment_864" class="wp-caption aligncenter" style="width: 460px"><img class="size-large wp-image-864" title="PressRoom Live" src="http://webdeveloper2.com/wp-content/uploads/2009/02/pr_live-450x216.png" alt="PressRoom Live" width="450" height="216" /><p class="wp-caption-text">Live application</p></div>
<p>The downside of this is ensuring that the edited css files and images do not get copied when deploying updates. A solution to this would be to use override stylesheets that would be included dynamically acording to the host address for the page.</p>
<p>e.g.</p>
<h4>mainstyle.css</h4>
<pre class="brush: css; toolbar: false;">
h1,h2,a{
 color: #ff0000;
}
</pre>
<h4>localcopy.css</h4>
<pre class="brush: css; toolbar: false;">
h1,h2,a{
 color: #0000ff !important;
}
</pre>
<p>Then the header of the page could include something similar to this (pseudo code)</p>
<pre class="brush: php; html-script: true; toolbar: false;">
&lt;link rel=&quot;stylesheet&quot; href=&quot;mainstyle.css&quot;/&gt;
&lt;?php if($hostname=='localhost'){ ?&gt;
    &lt;link rel=&quot;stylesheet&quot; href=&quot;localcopy.css&quot;/&gt;
&lt;?php } ?&gt;
</pre>
<p>This technique would give the advantage of having the visual indicator of which environment was being viewed whilst allowing the code to be deployed in its entirety.</p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/02/development-tip-color-coding-ui-by-deployment-platform/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Social Media Data Mining with FriendFeed</title>
		<link>http://webdeveloper2.com/2009/02/social-media-data-mining-with-friendfeed/</link>
		<comments>http://webdeveloper2.com/2009/02/social-media-data-mining-with-friendfeed/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 14:24:18 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Friendfeed]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[social media]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=855</guid>
		<description><![CDATA[FriendFeed have just launched an advanced search feature,  Marshall Kirkpatrick over at ReadWriteWeb has written an interesting article on how these options can be harnessed to assist with cross-network monitoring and data mining.

The nice thing is that all of the advanced search functions are available via the FriendFeed API, making it possible for developers to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.readwriteweb.com/archives/how_to_use_the_new_friendfeed.php"><img class="alignleft" src="http://www.readwriteweb.com/images/fflogo3.jpg" alt="friendfeed" /></a><a href="http://friendfeed.com/">FriendFeed</a> have just launched an <a href="http://friendfeed.com/search/advanced">advanced search</a> feature,  <a href="http://www.readwriteweb.com/about_marshall.php">Marshall Kirkpatrick</a> over at <a href="http://www.readwriteweb.com">ReadWriteWeb</a> has written an <a href="http://www.readwriteweb.com/archives/how_to_use_the_new_friendfeed.php">interesting article</a> on how these options can be harnessed to assist with cross-network monitoring and data mining.</p>
<p style="text-align: center;"><a href="http://www.readwriteweb.com/archives/how_to_use_the_new_friendfeed.php"><img class="aligncenter" src="http://www.readwriteweb.com/images/ffsearchscreen00.jpg" alt="" width="427" height="357" /></a></p>
<p>The nice thing is that all of the advanced search functions are available via the <a href="http://friendfeed.com/api/">FriendFeed API</a>, making it possible for developers to start building apps to collect and analyse the information that&#8217;s available.</p>
<p><a href="http://www.readwriteweb.com/archives/how_to_use_the_new_friendfeed.php"> How to Use the New FriendFeed Search for Social Media Intelligence. [via ReadWriteWeb]</a></p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/02/social-media-data-mining-with-friendfeed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Win a BRAND NEW Dell Netbook and 3G Subscription</title>
		<link>http://webdeveloper2.com/2009/02/win-a-brand-new-dell-netbook-and-3g-subscription/</link>
		<comments>http://webdeveloper2.com/2009/02/win-a-brand-new-dell-netbook-and-3g-subscription/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 11:52:41 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[3G]]></category>
		<category><![CDATA[competition]]></category>
		<category><![CDATA[Dell]]></category>
		<category><![CDATA[Netbook]]></category>
		<category><![CDATA[Vodafone]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=849</guid>
		<description><![CDATA[My good friend Paul Fabretti is giving away a Dell Netbook with a Vodafone 3G subscription.
 
 

All you need to do is follow @paulfabretti retweet the message about the competition and bookmark his blog post.
What have you got to lose? go to it!
]]></description>
			<content:encoded><![CDATA[<p>My good friend <a href="http://blendingthemix.com/2009/02/01/im-giving-away-a-brand-new-dell-netbook-and-3g-subscription/">Paul Fabretti</a> is giving away a Dell Netbook with a Vodafone 3G subscription.</p>
<p> </p>
<p> </p>
<p style="text-align: center;"><a href="http://blendingthemix.com/2009/02/01/im-giving-away-a-brand-new-dell-netbook-and-3g-subscription/"><img src="http://blendingthemix.com/wp-content/uploads/2009/02/netbook-blog.png" alt="Dell Netbook" width="450" /></a></p>
<p style="text-align: left;">All you need to do is follow <a href="http://twitter.com/paulfabretti" target="_blank">@paulfabretti</a> <a href="http://twitter.com/home?status=Free%20Dell%20Inspiron%20Mini%209%20Laptop.%20Follow%20@paulfabretti%20and%20Retweet.%20http://budurl.com/6bdj.%20He%20Also%20Follows%20Back!">retweet the message</a> about the competition and bookmark <a href="http://blendingthemix.com/2009/02/01/im-giving-away-a-brand-new-dell-netbook-and-3g-subscription/">his blog post</a>.</p>
<p style="text-align: left;">What have you got to lose? go to it!</p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/02/win-a-brand-new-dell-netbook-and-3g-subscription/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tagged by Fabretti</title>
		<link>http://webdeveloper2.com/2009/01/tagged-by-fabretti/</link>
		<comments>http://webdeveloper2.com/2009/01/tagged-by-fabretti/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 09:00:27 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[Ferris Bueller's Day Off]]></category>
		<category><![CDATA[Ian Carroll]]></category>
		<category><![CDATA[Jim Campbell]]></category>
		<category><![CDATA[Justin Davies]]></category>
		<category><![CDATA[Kyle Lacy]]></category>
		<category><![CDATA[Lee Kelleher]]></category>
		<category><![CDATA[Paul Fabretti]]></category>
		<category><![CDATA[Rob Sandbach]]></category>
		<category><![CDATA[Sarah Hartley]]></category>
		<category><![CDATA[tag]]></category>
		<category><![CDATA[The Italian Job]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=835</guid>
		<description><![CDATA[Paul Fabretti chose to tag me in one of these tag-the-blogger excercises so in the interests of not letting anybody down, I&#8217;ll continue the chain.
If you are tagged you should:
(a) republish these rules

Link to your original tagger(s) and list these rules in your post.
Share seven facts about yourself in the post.
Tag seven people at the end [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blendingthemix.com"></a>Paul Fabretti chose to tag me in one of these tag-the-blogger excercises so in the interests of not letting anybody down, I&#8217;ll continue the chain.</p>
<p>If you are tagged you should:</p>
<p>(a) republish these rules</p>
<ul>
<li>Link to your <a href="http://blendingthemix.com/2009/01/28/tagged-by-clayton/">original tagger</a>(s) and list these rules in your post.</li>
<li>Share seven facts about yourself in the post.</li>
<li>Tag seven people at the end of your post by leaving their names and the links to their blogs.</li>
<li>Let them know they’ve been tagged.</li>
</ul>
<p>(b) share seven facts about myself</p>
<ol>
<li>&#8220;<a href="http://www.imdb.com/title/tt0064505/">The Italian Job</a>&#8221; is my all time favourite movie.</li>
<li>At college I played in a band, all that&#8217;s left of those days is a 12 string guitar gathering dust in a cupboard.</li>
<li>I lived in the Alsace region of France for 18 months.</li>
<li>I have played Hockey for the same <a href="http://wilmslowhockey.org.uk/">club</a> on-and-off since I was 13 years old.</li>
<li>I have a secret superpower which, if revealed, would shake the global balance of power.</li>
<li>I sometimes lie on lists like this, more for my own entertainment than any other reason.</li>
<li>&#8220;<a href="http://www.imdb.com/title/tt0091042/">Ferris Bueller&#8217;s Day Off</a>&#8221; is <strong>really</strong> my favourite movie.</li>
</ol>
<p>c) So I tag:</p>
<ol>
<li><a href="http://www.indiespring.com/">Rob Sandbach</a></li>
<li><a href="http://blog.leekelleher.com/">Lee Kelleher</a></li>
<li><a href="http://blog.someofmywork.co.uk/">Jim Campbell</a></li>
<li><a href="http://www.justindavies.com.au/">Justin Davies</a></li>
<li><a href="http://projectfinishline.blogspot.com/">Ian Carroll</a></li>
<li><a href="http://kylelacy.com/">Kyle Lacy</a></li>
<li><a href="http://sarahhartley.wordpress.com/">Sarah Hartley</a></li>
</ol>
<p>I hope I&#8217;ve not tagged anybody who&#8217;s already in the chain but let&#8217;s see what happens.</p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/01/tagged-by-fabretti/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A new idea to hasten the demise of IE6</title>
		<link>http://webdeveloper2.com/2009/01/a-new-idea-to-hasten-the-demise-of-ie6/</link>
		<comments>http://webdeveloper2.com/2009/01/a-new-idea-to-hasten-the-demise-of-ie6/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 22:43:34 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[IE6]]></category>
		<category><![CDATA[Thom Shannon]]></category>
		<category><![CDATA[Web developer]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=823</guid>
		<description><![CDATA[Last year I was discussing the idea that as web designers and developers are the poeple who suffer most from IE6&#8217;s continued usage, we are responsible for doing what we can to educate users into upgrading.
37 Signals also announced that they would no longer actively support IE6, a step in the right direction but it [...]]]></description>
			<content:encoded><![CDATA[<p>Last year I was discussing the idea that as web designers and developers are the poeple who <a href="http://bit.ly/IE6MustDie">suffer most from IE6</a>&#8217;s continued usage, we are responsible for doing what we can to educate users into upgrading.</p>
<p>37 Signals also announced that they would <a href="http://webdeveloper2.com/2008/09/37-signals-phasing-out-ie6-support/">no longer actively support IE6</a>, a step in the right direction but it doesn&#8217;t actively encourage users to change their browser unless a change is made which actually stops the software from working in the offending browser.</p>
<p>Today I was alerted to Web developer, <a href="http://ts0.com/">Thom Shannon</a>&#8217;s latest website update. He has taken a new approach and one which I applaud.</p>
<p>If a user visits his blog with IE6, the page displays in black and white. The page also shows a message pointing out that the browser is outdated and suggesting some alternatives.</p>
<p>That&#8217;s the genius part, and like all great ideas, it seems so obvious. If you want IE6 users to upgrade, simply ask them to and provide them with links to the alternatives. This surely will convert more users than a gradual dropping of support for the old browser.</p>
<div id="attachment_824" class="wp-caption aligncenter" style="width: 460px"><a href="http://ts0.com/"><img class="size-full wp-image-824 " title="Thom Shannon's Blog" src="http://webdeveloper2.com/wp-content/uploads/2009/01/ts0.png" alt="ts0" width="450" height="370" /></a><p class="wp-caption-text">Thom Shannon&#39;s Blog showing IE6 view compared with the normal view</p></div>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/01/a-new-idea-to-hasten-the-demise-of-ie6/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Social Notworking?</title>
		<link>http://webdeveloper2.com/2009/01/social-notworking/</link>
		<comments>http://webdeveloper2.com/2009/01/social-notworking/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 03:11:58 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Gary Vaynerchuk]]></category>
		<category><![CDATA[Personal Brand Building]]></category>
		<category><![CDATA[Robert Scoble]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[social media network]]></category>
		<category><![CDATA[Stephen Fry]]></category>
		<category><![CDATA[Steve Jobs]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=811</guid>
		<description><![CDATA[The phrase &#8220;social notworking&#8221; I heard from Justin Davies, however, the question posed by my employer is: &#8220;Where is the value in staff twittering in company time?&#8221;
I would argue that if your work involves social media, especially if you are pitching the use of social media as a marketing and PR tool then it is vital that [...]]]></description>
			<content:encoded><![CDATA[<p>The phrase <strong>&#8220;social notworking&#8221;</strong> I heard from <a href="http://justindavies.com.au/2009/01/16/social-notworking/">Justin Davies</a>, however, the question posed by my employer is: <a href="http://bit.ly/ke8Q">&#8220;Where is the value in staff twittering in company time?&#8221;</a></p>
<p>I would argue that if your work involves social media, especially if you are pitching the use of social media as a marketing and PR tool then it is vital that you are seen to be actively using social media platforms day to day.</p>
<p>Any company is only as good as the people who work there, and in social media, it&#8217;s the people, not the company who are important. A company branded social media network which is driven by delivery of &#8220;the message&#8221; is doomed to failure without individual personalities who will interact with others in a more human way.</p>
<h3>The value of &#8220;Personal Brand&#8221;</h3>
<p>Whilst I appreciate that companies not directly involved with social media may need to control employee usage of twitter / facebook / myspace / friendface etc. The idea that &#8220;Personal Brand Building&#8221; has no value to the company doesn&#8217;t make sense to me. If you had just signed Christiano Ronaldo to your football team, you wouldn&#8217;t tie his shoelaces together to stop him playing well enough for other teams to want him. If you had hired <a href="http://www.stephenfry.com/">Stephen Fry</a> to present a television show, would you ask him to use a fake name and heavy disguise. Although these are internationally famous people, it&#8217;s only a matter of scale in popularity, not a different thing entirely.</p>
<p>Going back to the world on internet and technology, if personal brands add little value to a company, why is there such a panic over the idea of <a href="http://www.apple.com">Apple</a> without <a href="http://en.wikipedia.org/wiki/Steve_Jobs">Steve Jobs</a>? What would <a href="http://tv.winelibrary.com/">Wine Library TV</a> be without <a href="http://garyvaynerchuk.com/2009/01/16/i-am-a-triple-z-list-celebirty/">Gary Vaynerchuk</a>? How about <a href="http://www.fastcompany.tv/">Fast Company TV</a> without <a href="http://scobleizer.com/">Robert Scoble</a>? None of these businesses <em>NEED</em> the personal brands created by the people involved but is it right to suggest that they add no value to the company?</p>
<h3>Pimping out my Network</h3>
<p>At the time of writing, I have 432 followers on <a href="http://twitter.com/Techn0tic">Twitter</a>. I feel pretty confident in saying that I would have far fewer if I didn&#8217;t talk about personal thoughts and ideas, discuss other people&#8217;s projects with them, exchange opinions and share news that didn&#8217;t relate to my work. However when I do post about work related stuff, for instance the <a href="http://inblackandwhite.tv">seminars and workshops</a> that we run or <a href="http://pressroom.ackura.com">products that we are releasing</a>, should I charge my employer for the use of my personal network as a publicity channel? Of course I don&#8217;t, my work is as much a part of my life as anything else that I might be doing. If I wasn&#8217;t allowed to share non-work related thoughts during work time, I&#8217;d have to stop myself from thinking about work during non-working hours.</p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/01/social-notworking/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Google shutting down services</title>
		<link>http://webdeveloper2.com/2009/01/google-shutting-down-services/</link>
		<comments>http://webdeveloper2.com/2009/01/google-shutting-down-services/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 09:43:09 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Dodgeball]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[Google Catalog Search]]></category>
		<category><![CDATA[Google Mashup Editor]]></category>
		<category><![CDATA[Google Notebook]]></category>
		<category><![CDATA[Google Video]]></category>
		<category><![CDATA[Jaiku]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=805</guid>
		<description><![CDATA[
Danny Sullivan of Search Engine Land writes:
Google’s announced they’re closing or ceasing development of a variety of products as part of analready continuing move to keep efforts focused on other products with greater usage. These include an end to video uploads to Google Video, closure of Google Catalog Search, Google Notebook, Dodgeball, the microblogging service Jaiku and the Google Mashup Editor.
The closure of [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://www.readwriteweb.com/images/google150.jpg" alt="Google" /><br />
<a href="http://searchengineland.com/google-ends-google-video-uploads-shutters-notebook-catalog-search-dodgeball-jaiku-16166">Danny Sullivan</a> of <a href="http://searchengineland.com">Search Engine Land</a> writes:</p>
<blockquote><p>Google’s announced they’re closing or ceasing development of a variety of products as part of an<a href="http://searchengineland.com/google-to-change-product-development-steps-means-major-changes-to-20-time-15495">already continuing move</a> to keep efforts focused on other products with greater usage. These include an end to video uploads to <a href="http://video.google.com/">Google Video</a>, closure of <a href="http://catalogs.google.com/">Google Catalog Search</a>, <a href="http://www.google.com/notebook">Google Notebook</a>, Dodgeball, the microblogging service <a href="http://jaiku.com/">Jaiku</a> and the <a href="http://editor.googlemashups.com/">Google Mashup Editor</a>.</p></blockquote>
<p>The closure of uploads to Google Video is no surprise, I&#8217;ve wondered what would happen to it ever since Google bought YouTube and it&#8217;s role as a video search engine seems to be a better fit with Google core search service.</p>
<p>Interesting to see that Jaiku is being shut down, in my opinion, after the closure of Pownce in December, Jaiku was the next best direct competitor for Twitter. Another victim of Twitter&#8217;s popularity and phenomenal growth, it makes more room for the Twitter guys to start working out how to make money from the service.</p>
<p>Found via ReadWriteWeb:</p>
<p><a href="http://www.readwriteweb.com/archives/google_giveth_and_it_taketh_away.php">Google Giveth, and Taketh Away: Google Video, Notebook, Catalog Search, Jaiku, and Dodgeball to Shut Down &#8211; ReadWriteWeb </a>.</p>
<p><strong>Update:</strong> <a href="http://mashable.com/2009/01/14/jaiku-open-source/">More on this from Adam Ostrow at Mashable</a></p>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/01/google-shutting-down-services/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>A chat about Basecamp</title>
		<link>http://webdeveloper2.com/2009/01/a-chat-about-basecamp/</link>
		<comments>http://webdeveloper2.com/2009/01/a-chat-about-basecamp/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 00:43:24 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[project communications]]></category>
		<category><![CDATA[project management software]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=790</guid>
		<description><![CDATA[I had an interesting IM chat with my friend Jon Ward, a project manager with whom I recently worked. We were discussing the calendar functionality in Backpack and Jon brought up one of his pet bugbears &#8211; the lack of time-spanned events in Basecamp.
Jon likes Basecamp but as a project manager he wants to be [...]]]></description>
			<content:encoded><![CDATA[<p>I had an interesting IM chat with my friend <a href="http://twitter.com/jon626537">Jon Ward</a>, a project manager with whom I recently worked. We were discussing the calendar functionality in <a href="http://www.backpackit.com">Backpack</a> and Jon brought up one of his pet bugbears &#8211; the lack of time-spanned events in <a href="http://www.basecamphq.com/">Basecamp</a>.</p>
<p>Jon likes Basecamp but as a project manager he wants to be able to set start and end dates for tasks or milestones, Basecamp however only allows a single date to be set.</p>
<p>Anyway the conversation went as follows:</p>
<p style="padding-left: 30px;"><strong>Jon: </strong><br />
But would you use Backpack as a different tool to Basecamp?</p>
<p style="padding-left: 30px;"><strong>Dave: </strong><br />
I think it more of a personal organiser thing, you could probably use it like basecamp but only for a single project which didn&#8217;t require time recording</p>
<p style="padding-left: 30px;"><strong>Jon: </strong><br />
yeah was thinking that. But why they can&#8217;t put the calendar and journal in Basecamp is beyond me.</p>
<p style="padding-left: 30px;"><strong>Dave: </strong><br />
It probably crosses purposes with the milestones calendar and the messages in basecamp</p>
<p style="padding-left: 30px;"><strong>Jon: </strong><br />
I think they could be integrated and then you have a fully fledged project scheduler</p>
<p style="padding-left: 30px;"><strong>Dave: </strong><br />
it&#8217;s a possibility, I&#8217;m sure that there are other online PM apps which will do that, 37sigs need to be careful not to alienate existing customers by adding too much complexity<br />
most people started using basecamp for it&#8217;s simplicity<span id="more-790"></span></p>
<p style="padding-left: 30px;"><strong>Jon: </strong><br />
Good point but a fundamental aspect to PMing is the ability to schedule work and resource plan</p>
<p style="padding-left: 30px;"><strong>Dave: </strong><br />
It probably wasn&#8217;t an issue when they built it for their team, It&#8217;s an interesting point though, I wonder what other companies who use basecamp do for resource scheduling?</p>
<p style="padding-left: 30px;"><strong>Jon: </strong><br />
None i&#8217;d say as it&#8217;s too clumsy at the moment</p>
<p style="padding-left: 30px;"><strong>Dave: </strong><br />
Or use an alternative tool (MS Project or similar) and just use basecamp for progress tracking and project communications</p>
<p style="padding-left: 30px;"><strong>Jon: </strong><br />
That&#8217;s how the majority would be working. If Basecamp had a stronger way of scheduling then they&#8217;d be onto a right winner</p>
<p style="padding-left: 30px;"><strong>Dave: </strong><br />
I suppose it could be optional or only visible to users with PM permisions so as not to add complexity for non-PMs?</p>
<p style="padding-left: 30px;"><strong>Jon: </strong><br />
Have it only editable. It needs to be visible for people to know what they are supposed to be working on<br />
Editable only for PMs that is<br />
Viewable for the resources</p>
<p style="padding-left: 30px;"><strong>Dave: </strong><br />
OK, we should let Jason know that we&#8217;re too big for Basecamp and demand resources scheduling or we boycott the service <img src='http://webdeveloper2.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="padding-left: 30px;"><strong>Jon: </strong><br />
I&#8217;ve already emailed them along the similar lines<br />
 <img src='http://webdeveloper2.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p style="padding-left: 30px;"><strong>Dave: </strong><br />
I bet they&#8217;re worried now, watch out for Web 2.0 hitmen, you can spot them easily, they have a glossy sheen and a badge that says &#8220;beta&#8221; on it.</p>
<p style="padding-left: 30px;"><strong>Jon: </strong><br />
lmao Have they recruited <a href="http://twitter.com/paulfabretti">Fabretti</a>? With a name like that you&#8217;d think he would be their top hit man!</p>
<p style="padding-left: 30px;"><strong>Dave: </strong><br />
I believe they&#8217;ve made him an offer he can&#8217;t refuse</p>
<p style="padding-left: 30px;"><strong>Jon: </strong><br />
Thing is though, would a beta hit actually work or would I have to stay alive to give feedback for phases 0.1,2,3,4</p>
<p>OK, I know it got a bit silly towards the end but I&#8217;m interested to know how resource scheduling is handled by companies using Basecamp as their project management software. If this applies to you, please take a moment to answer the poll.</p>
<script type='text/javascript' language='javascript' charset='utf-8' src='http://s3.polldaddy.com/p/1270191.js'></script><noscript> <a href='http://answers.polldaddy.com/poll/1270191/'>View Poll</a></noscript>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/01/a-chat-about-basecamp/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>MehWorld Expo</title>
		<link>http://webdeveloper2.com/2009/01/mehworld-expo/</link>
		<comments>http://webdeveloper2.com/2009/01/mehworld-expo/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 16:31:04 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[digital media]]></category>
		<category><![CDATA[MacWorld Expo Keynote]]></category>
		<category><![CDATA[Steve Jobs]]></category>

		<guid isPermaLink="false">http://webdeveloper2.com/?p=773</guid>
		<description><![CDATA[I just don&#8217;t get all of the excitement over the MacWorld Expo Keynote, OK, so Apple does produce some great products but the fanboy hype around the event seems a little too much. Probably the most exciting thing was the speculation about Steve Jobs&#8217; health. He&#8217;ll be okay though, &#8220;he&#8217;s like a god who knows [...]]]></description>
			<content:encoded><![CDATA[<p>I just don&#8217;t get all of the excitement over the MacWorld Expo Keynote, OK, so Apple does produce some great products but the fanboy hype around the event seems a little too much. Probably the most exciting thing was the speculation about Steve Jobs&#8217; health. He&#8217;ll be okay though, <em>&#8220;he&#8217;s like a god who knows what we want&#8221;.</em></p>
<p><object width="425" height="344" data="http://www.youtube.com/v/CZGIn9bpALo&amp;hl=en&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/CZGIn9bpALo&amp;hl=en&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /></object></p>
<p>Interesting to see that DRM is being removed from iTunes although Apple are going down fighting on this one offering us the chance to pay for upgrading (removing the restrictions on) the music which we&#8217;ve already paid to buy &#8211; ownership seems to be a woolly concept in digital media.</p>
<p>Much more fun than the actual keynote is this video from <a href="http://www.theonion.com">The Onion</a> demonstrating the MacBook Wheel &#8211; <em>it couldn&#8217;t be simpler</em>!</p>
<p><object width="400" height="355" data="http://www.theonion.com/content/themes/common/assets/videoplayer2/flvplayer.swf" type="application/x-shockwave-flash"><param name="flashvars" value="file=http://www.theonion.com/content/xml/92328/video&amp;autostart=false&amp;image=http://www.theonion.com/content/files/images/NO_KEYBOARD_article.jpg&amp;bufferlength=3&amp;embedded=true&amp;title=Apple%20Introduces%20Revolutionary%20New%20Laptop%20With%20No%20Keyboard" /><param name="src" value="http://www.theonion.com/content/themes/common/assets/videoplayer2/flvplayer.swf" /><param name="wmode" value="transparent" /></object><br />
<a href="http://www.theonion.com/content/video/apple_introduces_revolutionary?utm_source=embedded_video">Apple Introduces Revolutionary New Laptop With No Keyboard</a></p>
<p>The world is full of people like the guy who says <em>&#8220;I&#8217;ll buy almost anything if it&#8217;s shiny and made by Apple&#8221;</em>. Excuse me if <em>I&#8217;m</em> not whooping and cheering about the latest updates.</p>
<h4>Update</h4>
<p>It seems like I&#8217;m not the only one finding Apple less than whoop-worthy at the moment, <a href="http://steverubel.typepad.com/about.html">Steve Rubel</a> and <a href="http://www.sitepoint.com/articlelist/526">Josh Catone</a> are also giving their opinions:</p>
<ul>
<li><a href="http://www.micropersuasion.com/2009/01/three-reasons-t.html">Three Reasons the Internet is Eroding Apple&#8217;s Mojo</a></li>
<li><a href="http://www.sitepoint.com/blogs/2009/01/07/apple-announces-google-docs-competitor-iworkcom/">Apple’s iWork.com Disappoints &#8211; Not a Google Docs Competitor</a></li>
<li><a href="http://www.sitepoint.com/blogs/2009/01/08/the-internet-is-taking-the-shine-off-of-apple/">The Internet is Taking the Shine off of Apple</a></li>
</ul>
<h4>Update 2</h4>
<p>I love this from <a title="A webcomic of romance, sarcasm, math, and language." href="http://xkcd.com/">XKCD</a>:</p>
<p style="text-align: center;"><a href="http://xkcd.com/527/"><img class="aligncenter" title="Keynote" src="http://imgs.xkcd.com/comics/keynote.png" alt="" width="365" height="380" /></a></p>
<ul></ul>
]]></content:encoded>
			<wfw:commentRss>http://webdeveloper2.com/2009/01/mehworld-expo/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
