<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5770699319086773094</id><updated>2011-07-31T05:42:06.325+08:00</updated><category term='jquery'/><category term='rollover'/><category term='unobtrusive'/><category term='css'/><category term='SEO'/><category term='javascript'/><category term='js'/><category term='dynamic'/><category term='swap'/><title type='text'>External Relations, Business School, Curtin</title><subtitle type='html'>Diary of a developer un-burying a corporate subsite.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://externalrelations-cbs.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5770699319086773094/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://externalrelations-cbs.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Steve Bramley - Business School, Curtin</name><uri>http://www.blogger.com/profile/00155921392780844069</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_QECLyVASh1c/SkLrFqYZuaI/AAAAAAAAAAM/KWFVQKNNOoY/S220/cat_warrior.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5770699319086773094.post-3811904664757037020</id><published>2009-07-03T11:26:00.002+08:00</published><updated>2009-07-03T11:35:38.138+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rollover'/><category scheme='http://www.blogger.com/atom/ns#' term='js'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='swap'/><category scheme='http://www.blogger.com/atom/ns#' term='unobtrusive'/><title type='text'>jquery rollover via image swap</title><content type='html'>Still on the theme of rollovers and keeping the js unobtrusive. On occasion our contributors need to plugin a rollover effect on an image. I wrote an accompanying js/jquery solution to unobtrusively seek out the rollover image, preload the active image and implement the hover function.&lt;br /&gt;&lt;br /&gt;example &lt;a href="http://www.business.curtin.edu.au/business/future-students"&gt;http://www.business.curtin.edu.au/business/future-students&lt;/a&gt; (which course[yellow] and which career [red] buttons mid-right)&lt;br /&gt;&lt;br /&gt;html:&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&amp;lt;img src="/images/btn08-fs-which-course02-off.jpg" border="0" alt="Which course?" width="144" height="135" class="rollover" /&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;js:&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;/* create a lookback for js regex */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;String.prototype.reverse = function () { return this.split('').reverse().join('');};&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;/* jquery inside  $(document).ready*/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;jQuery('[class*=rollover]').each(function(){  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;    src_path = $(this).attr("src");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;    this.off = new Image();  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;    this.on = new Image();  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;    this.off = $(this).attr("src");  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;    this.on = $(this).attr("src").reverse().replace(/ffo(?=(-_\.))/g, '!ffo-ecalper!').reverse().replace(/!replace-off!(?=((-_\.)))/gi, "on");  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;    $(this).hover(function(e){    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;        this.src = this.on;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;    },function(e){    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;        this.src = this.off;   &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;    }); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;});&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5770699319086773094-3811904664757037020?l=externalrelations-cbs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://externalrelations-cbs.blogspot.com/feeds/3811904664757037020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://externalrelations-cbs.blogspot.com/2009/07/jquery-rollover-via-image-swap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5770699319086773094/posts/default/3811904664757037020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5770699319086773094/posts/default/3811904664757037020'/><link rel='alternate' type='text/html' href='http://externalrelations-cbs.blogspot.com/2009/07/jquery-rollover-via-image-swap.html' title='jquery rollover via image swap'/><author><name>Steve Bramley - Business School, Curtin</name><uri>http://www.blogger.com/profile/00155921392780844069</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_QECLyVASh1c/SkLrFqYZuaI/AAAAAAAAAAM/KWFVQKNNOoY/S220/cat_warrior.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5770699319086773094.post-2956465771850071808</id><published>2009-06-26T16:38:00.008+08:00</published><updated>2009-06-26T17:10:29.123+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rollover'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='dynamic'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='unobtrusive'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>unobtrusive, dynamic image rollovers</title><content type='html'>Rollovers are excellent usability/accessibility points. They let you know right away that this thing that changes when you go near it, is going to lead you somewhere. The problem is that the implementation doesn't fit in well with unobtrusive javascript implementation.&lt;br /&gt;&lt;br /&gt;The solution can be quite simple when talking about navigation links or common buttons. ditch the javascript all-together because all you need is css.&lt;br /&gt;&lt;br /&gt;This style solution is now common and based on the a:hover psuedo-class. It uses a background graphic displayed via the styling where the graphic shows both the on and off or hot and cold rollover graphic. The important factors here are that the A tag's display is only as tall as the half graphic height. This is taken care of by setting the height of the A tag to 18px where the rollover graphic's height is 36px. When someone mouses over the A link, the hover class kicks in and displays the background image starting halfway, so the top half (the off position) is hidden.&lt;br /&gt;&lt;br /&gt;Lastly we want this to degrade nicely and read well for bots, so we place the actual link text in but obscure it.&lt;br /&gt;&lt;br /&gt;Background-graphic:&lt;br /&gt;&lt;a href="http://www.binarypusher.com/images/pages/1_name.gif"&gt;&lt;img style="WIDTH: 40px; CURSOR: hand; HEIGHT: 36px" alt="" src="http://www.binarypusher.com/images/pages/1_name.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;html:&lt;br /&gt;&amp;lt;ul id="navigation"&gt;&amp;amp;&lt;br /&gt;&amp;lt;li &gt;&amp;lt;a href="/some-link.html"&gt;&amp;lt;strong&gt;Some link&amp;lt;/strong&gt;&amp;lt;/a&gt;&amp;lt;/li&gt;&lt;br /&gt;&amp;lt;/ul&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;css:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;#navigation{&lt;br /&gt;height:18px;&lt;br /&gt;margin:0;&lt;br /&gt;padding:0;&lt;br /&gt;list-style-type:none;&lt;br /&gt;overflow:hidden;&lt;br /&gt;}&lt;br /&gt;#navigation li{&lt;br /&gt;float:left;&lt;br /&gt;}&lt;br /&gt;#navigation li a,#navigation li a:hover{&lt;br /&gt;display:block;&lt;br /&gt;color:white;&lt;br /&gt;padding:4px 21px 4px 20px;&lt;br /&gt;text-decoration:none;&lt;br /&gt;background-repeat:no-repeat;&lt;br /&gt;height:18px; /* limit the A height to the first half of the graphic*/&lt;br /&gt;background-position:0px 0px; /*set the background to only show the off graphic */&lt;br /&gt;}&lt;br /&gt;#navigation li a:hover, #navigation li.selected a{&lt;br /&gt;/*on hover or selection, roll the background image to half it's height, revealing the 'on' version */&lt;br /&gt;background-position:0px -18px;&lt;br /&gt;}&lt;br /&gt;#navigation li a strong{&lt;br /&gt;visibility:hidden;&lt;br /&gt;}&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Example: &lt;a href="http://www.business.curtin.edu.au/"&gt;http://www.business.curtin.edu.au/&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5770699319086773094-2956465771850071808?l=externalrelations-cbs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://externalrelations-cbs.blogspot.com/feeds/2956465771850071808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://externalrelations-cbs.blogspot.com/2009/06/unobtrusive-dynamic-image-rollovers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5770699319086773094/posts/default/2956465771850071808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5770699319086773094/posts/default/2956465771850071808'/><link rel='alternate' type='text/html' href='http://externalrelations-cbs.blogspot.com/2009/06/unobtrusive-dynamic-image-rollovers.html' title='unobtrusive, dynamic image rollovers'/><author><name>Steve Bramley - Business School, Curtin</name><uri>http://www.blogger.com/profile/00155921392780844069</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_QECLyVASh1c/SkLrFqYZuaI/AAAAAAAAAAM/KWFVQKNNOoY/S220/cat_warrior.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5770699319086773094.post-550741719697883017</id><published>2009-06-25T12:14:00.002+08:00</published><updated>2009-06-25T13:19:10.422+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='unobtrusive'/><title type='text'>Reducing js framework bloat</title><content type='html'>There are few sites that can achieve a sexy &lt;span style="font-weight: bold;"&gt;js framework&lt;/span&gt; implementation without the assistance of further plugins.  Many of my previous jobs required &lt;span style="font-style: italic;"&gt;at least&lt;/span&gt; the inclusion of a validation plugin for contact form validation and a greybox plugin for viewing image popups.&lt;br /&gt;&lt;br /&gt;As you would expect however, the majority of pages won't require all of those &lt;span style="font-weight: bold;"&gt;additional libraries&lt;/span&gt; so you end up with download and &lt;span style="font-weight: bold;"&gt;initialisation bloat&lt;/span&gt;.  In small site implementations this can quickly be rectified by implmenting different js includes for different types of templates (although this becomes messy dealing with &lt;span style="font-weight: bold;"&gt;multiple external&lt;/span&gt; initialisation scripts).&lt;br /&gt;&lt;br /&gt;On the &lt;a style="font-weight: bold;" href="http://www.business.curtin.edu.au/"&gt;business school&lt;/a&gt; website, there's no way of determining the uses of the page templates and therefore, no way of predetermining what js will be required.  On interviewing for the job, I was told there were some 2 thousand pages in the subsite so the varition in usage is too high to try manual control of js.   To try making all libraries available for all pages creates a js bloat of over 150kb which is too high.  I decided to &lt;span style="font-weight: bold;"&gt;automate js&lt;/span&gt; to &lt;span style="font-weight: bold;"&gt;dynamically inject libraries&lt;/span&gt; if and when they are required.&lt;br /&gt;&lt;br /&gt;code to &lt;span style="font-weight: bold;"&gt;dynamically inject&lt;/span&gt; the library if it's not already present:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;function includeJs(file) { &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;var scpt = "";&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;    &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;// Handle multiple include attempts &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    if($("script[src='" + file + "']").size() == 0) { &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        scpt = $('&lt;script&gt;&lt;/script&gt;').attr('type','text/javascript');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        scpt.attr('src',file);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        $('head').append(scpt);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    } &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;} &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;code to call the library when needed:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;//find all hyperlinks with .swf in their href&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$('a[href*=".swf"]').each(function(e){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        includeJs('/js/jquery.flash.js');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        //further code&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5770699319086773094-550741719697883017?l=externalrelations-cbs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://externalrelations-cbs.blogspot.com/feeds/550741719697883017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://externalrelations-cbs.blogspot.com/2009/06/reducing-js-framework-bloat.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5770699319086773094/posts/default/550741719697883017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5770699319086773094/posts/default/550741719697883017'/><link rel='alternate' type='text/html' href='http://externalrelations-cbs.blogspot.com/2009/06/reducing-js-framework-bloat.html' title='Reducing js framework bloat'/><author><name>Steve Bramley - Business School, Curtin</name><uri>http://www.blogger.com/profile/00155921392780844069</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_QECLyVASh1c/SkLrFqYZuaI/AAAAAAAAAAM/KWFVQKNNOoY/S220/cat_warrior.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5770699319086773094.post-3230517716850301053</id><published>2009-06-25T11:15:00.001+08:00</published><updated>2009-06-25T13:17:24.265+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><category scheme='http://www.blogger.com/atom/ns#' term='unobtrusive'/><title type='text'>Unobtrusive javascript</title><content type='html'>For years contributors have been posting javascript includes into their articles.  The site is littered with invalid and sometimes broken includes to files that no longer exist, no longer support the architecture or are just plain old not needed anymore.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1&lt;/span&gt;: Formulate a plan to pool all js requirements into a single updateable source.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Decision&lt;/span&gt; - Install a &lt;span style="font-weight: bold;"&gt;js framework library&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2&lt;/span&gt;: Decide on an appropriate js library/architecture.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Decision&lt;/span&gt; - I chose&lt;span style="font-weight: bold;"&gt; jQuery&lt;/span&gt;, mainly because I've been using it for years and have found it to be the least bloated while offering the best degree of control with minimal lines of code.  I've also tried a number of others such as Dojo and Scriptaculous, albeit in very early days.  They weren't bad but suffered from being buggy or bloated or just lacking some functions I really needed (like a hover function)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 3&lt;/span&gt;: Streamline the implementation for best crawl-ability, &lt;span style="font-weight: bold;"&gt;validation&lt;/span&gt; and loadtimes&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Decision&lt;/span&gt; - Remove all script from the page (unobtrusivity) and push it as far down the page as possible.&lt;br /&gt;&lt;br /&gt;It's been common practice amongst many developers to implement all their js in the header block of pages.  Traditionally this made sense because we wanted to be sure our js was readily available before we tried using it throughout the document.  These days however this has become an unhealthy practice due to the bloat in js size (frameworks vs the old single use precedures).  In page load terms, js hogs the download stream so nothing else on the page will download while js is coming down the pipe.  This can be changed by adding  &lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;defer="defer"&lt;/span&gt;.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;This is no longer appropriate however as &lt;span style="font-weight: bold;"&gt;js frameworks&lt;/span&gt; such as jQuery are instantiated using the document.ready protocol, so they'll only run once the document has downloaded and is displaying (usually this is the case but there's some discrepancy as to exactly when this init fires in different frameworks).  So to the script tag download can be deferred by params but why bother?  I've already identified that I want this to load last ... why not put it last?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 4&lt;/span&gt;: Calling the js&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Decision&lt;/span&gt; -  Install the minimum required.&lt;br /&gt;&lt;br /&gt;There should be two inital js includes here; one to the base library and one to the document holding your library initialisation calls.  Remember that we're pooling our js resources into a single point for easy updating.  So our implementation methodology will be kept in an &lt;span style="font-weight: bold;"&gt;external file&lt;/span&gt;.  I usually maintain two initialisation files, one public and one private for the CMS.  In this case, I just maintain one, but the habit's still there.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;&amp;lt;script type="text/javascript" src="js/jquery.min.js" defer="defer"&gt;&amp;lt;/script&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt; &amp;lt;script type="text/javascript" src="js/public.js"&gt;&amp;lt;/script&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;&amp;lt;/html&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;&amp;lt;/body&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5770699319086773094-3230517716850301053?l=externalrelations-cbs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://externalrelations-cbs.blogspot.com/feeds/3230517716850301053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://externalrelations-cbs.blogspot.com/2009/06/technorati-validation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5770699319086773094/posts/default/3230517716850301053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5770699319086773094/posts/default/3230517716850301053'/><link rel='alternate' type='text/html' href='http://externalrelations-cbs.blogspot.com/2009/06/technorati-validation.html' title='Unobtrusive javascript'/><author><name>Steve Bramley - Business School, Curtin</name><uri>http://www.blogger.com/profile/00155921392780844069</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_QECLyVASh1c/SkLrFqYZuaI/AAAAAAAAAAM/KWFVQKNNOoY/S220/cat_warrior.gif'/></author><thr:total>0</thr:total></entry></feed>
