<?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>Strong as an Ox</title>
	<atom:link href="http://www.strongasanox.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.strongasanox.co.uk</link>
	<description>Ian Oxley - ASP.NET, PHP, JavaScript and Web Applications</description>
	<lastBuildDate>Tue, 24 Aug 2010 22:54:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>How to Fix a Can&#8217;t Create/Write to File Error With SELECT INTO OUTFILE in MySQL</title>
		<link>http://www.strongasanox.co.uk/2010/08/24/how-to-fix-a-cant-create-write-to-file-error-with-select-into-outfile-in-mysql/</link>
		<comments>http://www.strongasanox.co.uk/2010/08/24/how-to-fix-a-cant-create-write-to-file-error-with-select-into-outfile-in-mysql/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 22:42:55 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.strongasanox.co.uk/2010/08/24/how-to-fix-a-file-permissions-error-with-mysqls-select-into-outfile/</guid>
		<description><![CDATA[Have you ever tried to use SELECT&#8230;INTO OUTFILE in MySQL and come across the following error? &#34;Can&#8217;t create/write to file &#8216;/path/to/folder/filename&#8217; (Errcode: 2)&#34; I was having this problem the other day and, after checking that file permissions weren&#8217;t the cause of the problem, I came across the following post on the MySQL forums: &#34;The problem [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever tried to use <a href="http://dev.mysql.com/doc/refman/5.1/en/select.html"><code>SELECT&hellip;INTO OUTFILE</code></a> in MySQL and come across the following error?</p>
<blockquote>
<p>
		&quot;Can&#8217;t create/write to file &#8216;/path/to/folder/filename&#8217; (Errcode: 2)&quot;
	</p>
</blockquote>
<p>I was having this problem the other day and, after checking that file permissions weren&#8217;t the cause of the problem, I came across the following <a href="http://forums.mysql.com/read.php?20,369583,370808#msg-370808">post on the MySQL forums</a>:</p>
<blockquote cite="http://forums.mysql.com/read.php?20,369583,370808#msg-370808">
<p>
		&quot;The problem was not in MySQL but in AppArmor on Ubuntu. I had to add the directories I wanted to write into to my /etc/apparmor.d/usr.sbin.mysqld and restart apparmor.d.&quot;
	</p>
</blockquote>
<p>So, one <code>sudo vim /etc/apparmor.d/usr.sbin.mysqld</code> later and I&#8217;d added the <code>path/to/folder</code> I needed to be able to write to (not forgetting to add the trailing comma &#8216;,&#8217; to the end of the line, which is <em>always</em> required, even for the last line). </p>
<p>All that was left to do was to restart AppArmor with:</p>
<p><code><br />
$ sudo /etc/init.d/apparmor restart<br />
</code></p>
<p>After that, <code>SELECT&hellip;INTO OUTFILE</code> worked like a charm <img src='http://www.strongasanox.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.strongasanox.co.uk/2010/08/24/how-to-fix-a-cant-create-write-to-file-error-with-select-into-outfile-in-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Moving Greasemonkey Scripts To GitHub</title>
		<link>http://www.strongasanox.co.uk/2010/08/18/moving-greasemonkey-scripts-to-github/</link>
		<comments>http://www.strongasanox.co.uk/2010/08/18/moving-greasemonkey-scripts-to-github/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 21:05:57 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[greasemonkey]]></category>

		<guid isPermaLink="false">http://www.strongasanox.co.uk/2010/08/18/moving-greasemonkey-scripts-to-github/</guid>
		<description><![CDATA[Recently I made a few amends to some Greasemonkey scripts I wrote a while back and, since I&#8217;ve been using git quite a bit recently, it made sense to me to move my Greasemonkey scripts onto GitHub. So I did And here they are: google-search-shortcut open-selected-links stackoverflow-tag-cloud straight-to-reader]]></description>
			<content:encoded><![CDATA[<p>Recently I made a few amends to some Greasemonkey scripts I wrote a while back and, since I&#8217;ve been <a href="http://www.strongasanox.co.uk/2010/04/27/using-git/">using git</a> quite a bit recently, it made sense to me to move my Greasemonkey scripts onto GitHub.</p>
<p>So I did <img src='http://www.strongasanox.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  And here they are:</p>
<ul>
<li><a href="http://github.com/ianoxley/google-search-shortcut">google-search-shortcut</a></li>
<li><a href="http://github.com/ianoxley/open-selected-links">open-selected-links</a></li>
<li><a href="http://github.com/ianoxley/stackoverflow-tag-cloud">stackoverflow-tag-cloud</a></li>
<li><a href="http://github.com/ianoxley/straight-to-reader">straight-to-reader</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.strongasanox.co.uk/2010/08/18/moving-greasemonkey-scripts-to-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Detecting A Drupal Users First Login</title>
		<link>http://www.strongasanox.co.uk/2010/08/05/detecting-a-drupal-users-first-login/</link>
		<comments>http://www.strongasanox.co.uk/2010/08/05/detecting-a-drupal-users-first-login/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 22:43:11 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.strongasanox.co.uk/2010/08/05/detecting-a-drupal-users-first-login/</guid>
		<description><![CDATA[Being fairly new to Drupal, I was interested to know whether it had anything built in that let you know, or detect, when a user was logging in for the first time e.g. to show them a welcome message. As far as I know, there&#8217;s no method in the API to detect this. However, after [...]]]></description>
			<content:encoded><![CDATA[<p>Being fairly new to Drupal, I was interested to know whether it had anything built in that let you know, or detect, when a user was logging in for the first time e.g. to show them a welcome message.</p>
<p>As far as I know, there&#8217;s no method in the API to detect this. However, after checking the <code>global $user</code> object&#39;s properties to see what we had to play with, it turns out it wasn&#39;t all that tricky:</p>
<ul>
<li>the <code>$global user</code> contains 3 timestamp properties: <code>created</code>, <code>access</code> and <code>login</code></li>
<li>when a user logs in for the first time, all 3 of these timestamps are equal</li>
</ul>
<p>This means we can check whether a user is logging in for the first time with something like this:</p>
<p><code></p>
<pre>
function is_first_time_login($user) {
  return ($user->created == $user->login) &#038;&#038;
         ($user->login == $user->access);
}
	</pre>
<p></code></p>
<p>Now we can call that function where we need to in our elsewhere in our code. For example:</p>
<p><code>
<pre>
function foo() {
  global $user;
  ...
  if (is_first_time_login($user)) {
    drupal_set_message(WELCOME_MSG);
  }
  ...
}
</pre>
<p></code></p>
<p>So far, this approach seems to be working quite well <img src='http://www.strongasanox.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.strongasanox.co.uk/2010/08/05/detecting-a-drupal-users-first-login/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting up Unit Testing in Drupal 6 with PHPUnit</title>
		<link>http://www.strongasanox.co.uk/2010/07/23/setting-up-unit-testing-in-drupal-6-with-phpunit/</link>
		<comments>http://www.strongasanox.co.uk/2010/07/23/setting-up-unit-testing-in-drupal-6-with-phpunit/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 12:34:13 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpunit]]></category>

		<guid isPermaLink="false">http://www.strongasanox.co.uk/?p=401</guid>
		<description><![CDATA[I&#8217;ve been using Drupal now for a couple of months, ever since I started my new job, and the other day got my first chance to start writing a custom module. I was keen to use a TDD approach, but wasn&#8217;t sure how well this would play with Drupal. The SimpleTest module looked pretty good [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using Drupal now for a couple of months, ever since I started my <a href="http://www.orangebus.co.uk/">new job</a>, and the other day got my first chance to start writing a custom module.</p>
<p>I was keen to use a TDD approach, but wasn&#8217;t sure how well this would play with Drupal. The <a href="http://drupal.org/project/simpletest">SimpleTest module</a> looked pretty good but in the end I went with <a href="http://www.phpunit.de/">PHPUnit</a>, mainly because I&#8217;d used it before.</p>
<p>After a bit of research I came across a this post explaining how to get PHPUnit set up to play nicely with Drupal 6: <a href="http://kristiannissen.wordpress.com/2009/12/08/drupal-6-phpunit-testing-setup/">http://kristiannissen.wordpress.com/2009/12/08/drupal-6-phpunit-testing-setup/</a></p>
<p>It worked like a charm <img src='http://www.strongasanox.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  So, just for good measure, I created a project template containing the <code>unittests</code> folder and necessary include files and stuck it on GitHub: <a href="http://github.com/ianoxley/drupal-phpunit-template">http://github.com/ianoxley/drupal-phpunit-template</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.strongasanox.co.uk/2010/07/23/setting-up-unit-testing-in-drupal-6-with-phpunit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Greasemonkey Open Selected Links Script</title>
		<link>http://www.strongasanox.co.uk/2010/06/01/greasemonkey-open-selected-links-script/</link>
		<comments>http://www.strongasanox.co.uk/2010/06/01/greasemonkey-open-selected-links-script/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 21:02:24 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[greasemonkey]]></category>

		<guid isPermaLink="false">http://www.strongasanox.co.uk/?p=378</guid>
		<description><![CDATA[I hadn&#8217;t done any monkeying around with Greasemonkey for a while until the other day when I came up with this script: http://github.com/ianoxley/open-selected-links Any links that are present in the selected text will be opened on the mouseup event, except for the Cached and Similar links you get in Google search results. If you&#8217;ve got [...]]]></description>
			<content:encoded><![CDATA[<p>I hadn&#8217;t done any monkeying around with <a href="https://addons.mozilla.org/en-US/firefox/addon/748/">Greasemonkey</a> for a while until the other day when I came up with this script: <a href="http://github.com/ianoxley/open-selected-links">http://github.com/ianoxley/open-selected-links</a></p>
<p>Any links that are present in the selected text will be opened on the <code>mouseup</code> event, except for the <strong>Cached</strong> and <strong>Similar</strong> links you get in Google search results.</p>
<p>If you&#8217;ve got and suggestions for improvements, let me know in the comments <img src='http://www.strongasanox.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>UPDATE</h3>
<p>The script has been updated so that you now have to press the <code>Ctrl</code> or <code>Cmd</code> key while selecting the text, in the same way that you would <code>Ctrl / Cmd + click</code> to open a link in a new tab.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strongasanox.co.uk/2010/06/01/greasemonkey-open-selected-links-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some Fun with the TARDIS, HTML5 and CSS3</title>
		<link>http://www.strongasanox.co.uk/2010/05/19/some-fun-with-the-tardis-html5-and-css3/</link>
		<comments>http://www.strongasanox.co.uk/2010/05/19/some-fun-with-the-tardis-html5-and-css3/#comments</comments>
		<pubDate>Wed, 19 May 2010 21:54:32 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[doctor who]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://www.strongasanox.co.uk/?p=371</guid>
		<description><![CDATA[Just for fun, I thought I would have a play around with some WebKit CSS transitions and the HTML5 &#60;audio&#62; tag to see if I could simulate the TARDIS landing Here&#8217;s what I came up with (currently only works in Safari): TARDIS, HTML5 and CSS3 WebKit Transitions]]></description>
			<content:encoded><![CDATA[<p>Just for fun, I thought I would have a play around with some WebKit CSS transitions and the HTML5 &lt;audio&gt; tag to see if I could simulate the <a href="http://en.wikipedia.org/wiki/TARDIS">TARDIS</a> landing <img src='http://www.strongasanox.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Here&#8217;s what I came up with (currently only works in Safari): <a href="http://lab.strongasanox.co.uk/tardis.html">TARDIS, HTML5 and CSS3 WebKit Transitions</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.strongasanox.co.uk/2010/05/19/some-fun-with-the-tardis-html5-and-css3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xdebug Tailored Installation Instructions with PHP 5.2 and Ubuntu 10.04</title>
		<link>http://www.strongasanox.co.uk/2010/05/18/xdebug-tailored-installation-instructions-with-php-5-2-and-ubuntu-10-04/</link>
		<comments>http://www.strongasanox.co.uk/2010/05/18/xdebug-tailored-installation-instructions-with-php-5-2-and-ubuntu-10-04/#comments</comments>
		<pubDate>Tue, 18 May 2010 21:27:14 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[devtools]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[xdebug]]></category>

		<guid isPermaLink="false">http://www.strongasanox.co.uk/?p=356</guid>
		<description><![CDATA[I was really impressed with the Xdebug Tailored Installation Instructions earlier today. Setting up a dev machine at my new job wasn&#8217;t going quite according to plan because, as nice as Ubuntu 10.04 Lucid Lynx is: Installing PHP via sudo apt-get install php5 installs the latest version from the repositories (version 5.3 at the time [...]]]></description>
			<content:encoded><![CDATA[<p>I was really impressed with the <a href="http://xdebug.org/find-binary.php">Xdebug Tailored Installation Instructions</a> earlier today. Setting up a dev machine at <a href="http://www.orangebus.co.uk/">my new job</a> wasn&#8217;t going quite according to plan because, as nice as Ubuntu 10.04 Lucid Lynx is:</p>
<ol>
<li>Installing PHP via <code>sudo apt-get install php5</code> installs the latest version from the repositories (version 5.3 at the time of writing)</li>
<li>We do a lot of work in Drupal, mostly version 6 which isn&#8217;t compatible with PHP 5.3 (and quite a few modules that work with Drupal 6 don&#8217;t work with Drupal 7 apparently &#8211; Drupal 7 plays a lot nicer with PHP 5.3 by all accounts).</li>
<li>So it was necessary to uninstall all the PHP 5.3 packages, <a href="http://ohioloco.ubuntuforums.org/showpost.php?p=9080474&amp;postcount=7">add the karmic repositories to the sources.list</a> then reinstall PHP &#8211; this time PHP 5.2</li>
</ol>
<p>Once all this was done, it was time to install Xdebug. The tailored installation instructions seemed the best option as I&#8217;d just had to revert to a previous version of PHP. And, it couldn&#8217;t have been simpler or more straight-forward to do:</p>
<ol>
<li>Go to <a href="http://xdebug.org/find-binary.php">http://xdebug.org/find-binary.php</a>, paste in the HTML from your <code>phpinfo()</code> output and submit the form</li>
<li>You&#8217;ll get a nice summary and some instructions to follow <img src='http://www.strongasanox.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
<div id="attachment_358" class="wp-caption aligncenter" style="width: 160px"><a href="http://www.strongasanox.co.uk/wp-content/uploads/2010/05/xdebug_summary.jpg"><img class="size-thumbnail wp-image-358 " title="Summary" src="http://www.strongasanox.co.uk/wp-content/uploads/2010/05/xdebug_summary-150x150.jpg" alt="Summary" width="150" height="150" /></a><p class="wp-caption-text">Summary</p></div>
<p><div id="attachment_359" class="wp-caption aligncenter" style="width: 160px"><a href="http://www.strongasanox.co.uk/wp-content/uploads/2010/05/xdebug_instructions.jpg"><img class="size-thumbnail wp-image-359 " title="Instructions" src="http://www.strongasanox.co.uk/wp-content/uploads/2010/05/xdebug_instructions-150x150.jpg" alt="Instructions" width="150" height="150" /></a><p class="wp-caption-text">Instructions</p></div></li>
</ol>
<p>After following the instructions, restart apache and reload your <code>phpinfo()</code> page: if your experience is anything as good as mine you should see all the xdebug configuration options set up nicely and ready to go.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strongasanox.co.uk/2010/05/18/xdebug-tailored-installation-instructions-with-php-5-2-and-ubuntu-10-04/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Git</title>
		<link>http://www.strongasanox.co.uk/2010/04/27/using-git/</link>
		<comments>http://www.strongasanox.co.uk/2010/04/27/using-git/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 21:18:29 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[devtools]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://www.strongasanox.co.uk/?p=349</guid>
		<description><![CDATA[Since going freelance at the end of last month I made the conscious decision to use Git for my source control on freelance projects. I&#8217;d kind of used it a bit when adding stuff to GitHub but hadn&#8217;t really used it in anger on anything. Until now. And so far so good. Quite a nifty [...]]]></description>
			<content:encoded><![CDATA[<p>Since going freelance at the end of last month I made the conscious decision to use <a href="http://git-scm.com/">Git</a> for my source control on freelance projects. I&#8217;d kind of used it a bit when adding stuff to <a href="http://github.com/">GitHub</a> but hadn&#8217;t really used it in anger on anything. Until now. And so far so good.</p>
<p>Quite a nifty little cheatsheet I found was this: <a href="http://cheat.errtheblog.com/s/git">http://cheat.errtheblog.com/s/git</a></p>
<p>I really like the aliases and colour-coding &#8211; simple stuff but these save you a lot of typing / keystrokes and make it easier to see at a glance what&#8217;s what respectively <img src='http://www.strongasanox.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.strongasanox.co.uk/2010/04/27/using-git/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JavaScript WebKit Notifications API Demo With Flickr and JSONP</title>
		<link>http://www.strongasanox.co.uk/2010/04/24/javascript-webkit-notifications-api-demo-with-flickr-and-jsonp/</link>
		<comments>http://www.strongasanox.co.uk/2010/04/24/javascript-webkit-notifications-api-demo-with-flickr-and-jsonp/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 21:12:52 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[jsonp]]></category>
		<category><![CDATA[webkit notifications api]]></category>

		<guid isPermaLink="false">http://www.strongasanox.co.uk/?p=324</guid>
		<description><![CDATA[I&#8217;ve been playing around with the JavaScript Notifications API recently &#8211; or to be a bit more specific the WebKit Notifications API &#8211; and put together this little demo using Flickr and JSONP: You search Flickr by entering a tag The JSONP callback function then displays the first few photos returned using the Notifications API [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been playing around with the JavaScript <a href="http://www.chromium.org/developers/design-documents/desktop-notifications/api-specification">Notifications API</a> recently &#8211; or to be a bit more specific the WebKit Notifications API &#8211; and put together <a href="http://lab.strongasanox.co.uk/notify.html">this little demo</a> using Flickr and JSONP:</p>
<ol>
<li>You search Flickr by entering a tag</li>
<li>The JSONP callback function then displays the first few photos returned using the Notifications API</li>
<li>Each notification is cancelled after 10 seconds (there is no Dismiss button, like there is when you use the API on <code>localhost</code>)</li>
</ol>
<p>You&#8217;ll need to grant notification permissions first to be able to view the notifications &#8211; you should see an info bar like the one below the first time you click on <code>Search</code>:</p>
<p><a href="http://www.strongasanox.co.uk/wp-content/uploads/2010/04/Screenshot-Webkit-Notifications-API-request-permission1.png"><img class="size-medium wp-image-331 alignnone" title="WebKit Notifications API requestPermission screenshot" src="http://www.strongasanox.co.uk/wp-content/uploads/2010/04/Screenshot-Webkit-Notifications-API-request-permission1-300x66.png" alt="WebKit Notifications API requestPermission screenshot" width="300" height="66" /></a></p>
<p>After that, you should see the notifications stack up in the bottom right-hand corner of your screen:</p>
<p><a href="http://www.strongasanox.co.uk/wp-content/uploads/2010/04/Screenshot-notifications1.png"><img class="alignnone size-medium wp-image-339" title="Screenshot of the notifications" src="http://www.strongasanox.co.uk/wp-content/uploads/2010/04/Screenshot-notifications1-300x168.png" alt="Screenshot of the notifications" width="300" height="168" /></a></p>
<p>At the time of writing, you&#8217;ll need to be using Google Chrome for the demo to work (although I&#8217;m pretty sure that support for the Notifications API in Safari is imminent).</p>
<p>And, as an aside, I managed to throw a bit of HTML 5 into the demo as well with some <a href="http://dev.w3.org/html5/spec/Overview.html#autofocusing-a-form-control">autofocus</a> and <a href="http://dev.w3.org/html5/spec/Overview.html#the-placeholder-attribute">placeholder</a> attributes on the <code>&lt;input type="text" /&gt;</code> field, just for good measure <img src='http://www.strongasanox.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.strongasanox.co.uk/2010/04/24/javascript-webkit-notifications-api-demo-with-flickr-and-jsonp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usability Testing of APIs</title>
		<link>http://www.strongasanox.co.uk/2010/04/21/usability-testing-of-apis/</link>
		<comments>http://www.strongasanox.co.uk/2010/04/21/usability-testing-of-apis/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 09:10:31 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[ux]]></category>
		<category><![CDATA[coders at work]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://www.strongasanox.co.uk/?p=318</guid>
		<description><![CDATA[Usability testing, as you may well know, involves you watching real users interact with your website or application so you can really see how they interact with it and how you might improve certain areas of it. Of course, there&#8217;s no reason usability testing in software has to be restricted to just websites and applications. [...]]]></description>
			<content:encoded><![CDATA[<p>Usability testing, as you may well know, involves you watching real users interact with your website or application so you can really see how they interact with it and how you might improve certain areas of it.</p>
<p>Of course, there&#8217;s no reason usability testing in software has to be restricted to just websites and applications. In Peter Seibel&#8217;s book, <a href="http://www.codersatwork.com/">Coders at Work</a>, I was interested to read Simon Peyton Jones discussing how Microsoft applies usability testing to API&#8217;s:</p>
<blockquote><p>Well, they also do some interesting work on testing APIs. Steven Clarke and his colleagues at Redmond have made systematic attempts to watch programmers, given a new API, talk through what they&#8217;re trying to do. And they get the people who designed the API to sit behind a glass screen and watch them.</p>
<p>And the guys sitting there behind the glass screen say, &#8220;No, no, don&#8217;t do that! That&#8217;s not the right way!&#8221; But it&#8217;s soundproof. That turns out often to be very instructive. They go and change their API.</p>
<div>from Coders at Work, Chapter 7 &#8211; Simon Peyton Jones [p. 253]</div>
</blockquote>
<p>If you haven&#8217;t yet got a copy of Coders at Work you can <a href="http://www.amazon.co.uk/gp/product/1430219483?ie=UTF8&amp;tag=strasanox-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=1430219483">buy one from Amazon</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strongasanox.co.uk/2010/04/21/usability-testing-of-apis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
