<?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>The Hospitality Store</title>
	<atom:link href="http://thehospitalityshop.com.au/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://thehospitalityshop.com.au</link>
	<description>Everyday Essentials</description>
	<lastBuildDate>Tue, 20 Oct 2015 07:01:49 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.9.1</generator>
	<item>
		<title>Hello world!</title>
		<link>http://thehospitalityshop.com.au/?p=1</link>
		<comments>http://thehospitalityshop.com.au/?p=1#comments</comments>
		<pubDate>Wed, 04 Jun 2014 20:47:25 +0000</pubDate>
		<dc:creator><![CDATA[PursuitTechnology]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://thehospitalityshop.com.au/?p=1</guid>
		<description><![CDATA[Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!]]></description>
				<content:encoded><![CDATA[<p>Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!</p>
]]></content:encoded>
			<wfw:commentRss>http://thehospitalityshop.com.au/?feed=rss2&#038;p=1</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hello world!</title>
		<link>http://thehospitalityshop.com.au/?p=540</link>
		<comments>http://thehospitalityshop.com.au/?p=540#comments</comments>
		<pubDate>Thu, 22 May 2014 09:30:17 +0000</pubDate>
		<dc:creator><![CDATA[PursuitTechnology]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://demo.themetan.com/shoptanafter/?p=1</guid>
		<description><![CDATA[Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!]]></description>
				<content:encoded><![CDATA[<p>Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!</p>
]]></content:encoded>
			<wfw:commentRss>http://thehospitalityshop.com.au/?feed=rss2&#038;p=540</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>An Introduction To DOM Events</title>
		<link>http://thehospitalityshop.com.au/?p=302</link>
		<comments>http://thehospitalityshop.com.au/?p=302#comments</comments>
		<pubDate>Sun, 23 Mar 2014 05:52:15 +0000</pubDate>
		<dc:creator><![CDATA[PursuitTechnology]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[post]]></category>

		<guid isPermaLink="false">http://demo.themetan.com/shoptan/?p=302</guid>
		<description><![CDATA[Click, touch, load, drag, change, input, error, resize — the list of possible DOM events is lengthy. Events can be<a class="readmore" href="http://thehospitalityshop.com.au/?p=302"><i class="fa fa-arrow-circle-right"></i>Read more...</a>]]></description>
				<content:encoded><![CDATA[<p>Click, touch, load, drag, change, input, error, resize — the list of possible DOM events is lengthy. Events can be triggered on any part of a document, whether by a user’s interaction or by the browser. They don’t just start and end in one place; they flow though the document, on a life cycle of their own. This life cycle is what makes DOM events so extensible and useful. As developers, we should understand how DOM events work, so that we can harness their potential and build engaging experiences.</p>
<p>Throughout my time as a front-end developer, I felt that I was never given a straight explanation of how DOM events work. My aim here is to give you a clear overview of the subject, to get you up to speed more quickly than I did.</p>
<p>I will introduce the basics of working with DOM events, then delve into their inner workings, explaining how we can make use of them to solve common problems.</p>
<h3>Listening For Events</h3>
<p>In the past, browsers have had major inconsistencies in the way they attach event listeners to DOM nodes. Libraries such as <a title="jQuery" href="http://jquery.com/">jQuery</a> have been invaluable in abstracting away these oddities.</p>
<p>As we move ever closer to standardized browser environments, we can more safely use the APIs from the official specification. To keep it simple, I will describe how to manage events for the modern Web. If you are writing JavaScript for Internet Explorer (IE) 8 or below, I would advise using a <a title="addEventListener polyfill" href="https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.removeEventListener#Polyfill_to_support_older_browsers">polyfill</a> or framework (such as <a title="jQuery" href="http://jquery.com/">jQuery</a>) to manage event listeners.</p>
<p>In JavaScript, we can listen to events using this:</p>
<pre><code>element.addEventListener(&lt;event-name&gt;, &lt;callback&gt;, &lt;use-capture&gt;);
</code></pre>
<ul>
<li><code>event-name</code> (string)<br />
This is the name or type of event that you would like to listen to. It could be any of the standard DOM events (<code>click</code>, <code>mousedown</code>, <code>touchstart</code>,<code>transitionEnd</code>, etc.) or even your own custom event name (we’ll touch on custom events later).</li>
<li><code>callback</code> (function)<br />
This function gets called when the event happens. The <code>event</code> object, containing data about the event, is passed as the first argument.</li>
<li><code>use-capture</code> (boolean)<br />
This declares whether the callback should be fired in the “capture” phase. (Don’t worry: We’ll explain what that means a little later.)</li>
</ul>
<pre><code>var element = document.getElementById('element');

function callback() {
  alert('Hello');
}

// Add listener
element.addEventListener('click', callback);
</code></pre>
<p><a href="http://jsbin.com/ayatif/2/edit">Demo: addEventListener</a></p>
<h3>Removing Listeners</h3>
<p>Removing event listeners once they are no longer needed is a best practice (especially in long-running Web applications). To do this, use the<code>element.removeEventListener()</code> method:</p>
<pre><code>element.removeEventListener(&lt;event-name&gt;, &lt;callback&gt;, &lt;use-capture&gt;);
</code></pre>
<p>But <code>removeEventListener</code> has one catch: You must have a reference to the callback function that was originally bound. Simply calling<code>element.removeEventListener('click');</code> will not work.</p>
<p>Essentially, if we have any interest in removing event listeners (which we should in “long-lived” applications), then we need to keep a handle on our callbacks. This means we cannot use anonymous functions.</p>
<pre><code>var element = document.getElementById('element');

function callback() {
  alert('Hello once');
  element.removeEventListener('click', callback);
}

// Add listener
element.addEventListener('click', callback);
</code></pre>
<p><a href="http://jsbin.com/ayamur/1/edit">Demo: removeEventListener</a></p>
<h3>Maintaining Callback Context</h3>
<p>An easy gotcha is callbacks being called with the incorrect context. Let’s explain with an example.</p>
<pre><code>var element = document.getElementById('element');

var user = {
 firstname: 'Wilson',
 greeting: function(){
   alert('My name is ' + this.firstname);
 }
};

// Attach user.greeting as a callback
element.addEventListener('click', user.greeting);

// alert =&gt; 'My name is undefined'
</code></pre>
<p><a href="http://jsbin.com/atoluy/1/edit">Demo: Incorrect callback context</a></p>
<h4>USING ANONYMOUS FUNCTIONS</h4>
<p>We expected the callback to correctly alert us with <code>My name is Wilson</code>. In fact, it alerts us with <code>My name is undefined</code>. In order for <code>this.firstName</code> to return<code>Wilson</code>, <code>user.greeting</code> must be called within the context (i.e. whatever is left of the dot when called) of <code>user</code>.</p>
<p>When we pass the <code>greeting</code> function to the <code>addEventListener</code> method, we are only passing a reference to the function; the context of <code>user</code> is not passed with it. Internally, the callback is called in the context of <code>element</code>, which means that<code>this</code> refers to <code>element</code>, not to <code>user</code>. Therefore, <code>this.firstname</code> is undefined.</p>
<p>There are two ways to prevent this context mismatch. First, we can call<code>user.greeting()</code> with the correct context inside an anonymous function.</p>
<pre><code>element.addEventListener('click', function() {
  user.greeting();
  // alert =&gt; 'My name is Wilson'
});
</code></pre>
<p><a href="http://jsbin.com/onomud/1/edit">Demo: Anonymous functions</a></p>
<h4>FUNCTION.PROTOTYPE.BIND</h4>
<p>The last method isn’t so good because now we don’t have a handle on the function when we want to remove it with <code>.removeEventListener()</code>. Plus, it’s pretty ugly. I prefer to use the <a title="Function.prototype.bind" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind"><code>.bind()</code></a> method (built into all functions, as of ECMAScript 5) to generate a new function (<code>bound</code>) that will always run in the given context. We then pass that function as the callback to<code>.addEventListener()</code>.</p>
<pre><code>// Overwrite the original function with
// one bound to the context of 'user'
user.greeting = user.greeting.bind(user);

// Attach the bound user.greeting as a callback
button.addEventListener('click', user.greeting);
</code></pre>
<p>We also have a reference to the callback at hand, which we can use to unbind the listener if need be.</p>
<pre><code>button.removeEventListener('click', user.greeting);
</code></pre>
<p><a href="http://jsbin.com/ozolec/1/edit">Demo: Function.prototype.bind</a></p>
<ul>
<li>Check the <a href="http://kangax.github.io/es5-compat-table/#Function.prototype.bind">support page</a> for <code>Function.prototype.bind</code> and <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Compatibility">polyfill</a> if you need it.</li>
</ul>
<h3>The Event Object</h3>
<p>The event object is created when the event first happens; it travels with the event on its journey through the DOM. The function that we assign as a callback to an event listener is passed the event object as its first argument. We can use this object to access a wealth of information about the event that has occurred:</p>
<ul>
<li><code>type</code> (string)<br />
This is the name of the event.</li>
<li><code>target</code> (node)<br />
This is the DOM node where the event originated.</li>
<li><code>currentTarget</code> (node)<br />
This is the DOM node that the event callback is currently firing on.</li>
<li><code>bubbles</code> (boolean)<br />
This indicates whether this is a “bubbling” event (which we’ll <a href="http://coding.smashingmagazine.com/2013/11/12/an-introduction-to-dom-events/#bubble-phase">explain later</a>).</li>
<li><code>preventDefault</code> (function)<br />
This prevents any default behaviour from occurring that the user agent (i.e. browser) might carry out in relation to the event (for example, preventing a <code>click</code> event on an <code>&lt;a&gt;</code> element from loading a new page).</li>
<li><code>stopPropagation</code> (function)<br />
This prevents any callbacks from being fired on any nodes further along the event chain, but it does not prevent any additional callbacks of the same event name from being fired on the current node. (We’ll talk about that <a href="http://coding.smashingmagazine.com/2013/11/12/an-introduction-to-dom-events/#stopping-propagation">later</a>.)</li>
<li><code>stopImmediatePropagation</code> (function)<br />
This prevents any callbacks from being fired on any nodes further along the event chain, including any additional callbacks of the same event name on the current node.</li>
<li><code>cancelable</code> (boolean)<br />
This indicates whether the default behaviour of this event can be prevented by calling the <a href="http://coding.smashingmagazine.com/2013/11/12/an-introduction-to-dom-events/#preventing-default"><code>event.preventDefault</code></a> method.</li>
<li><code>defaultPrevented</code> (boolean)<br />
This states whether the <code>preventDefault</code> method has been called on the event object.</li>
<li><code>isTrusted</code> (boolean)<br />
An event is said to be “trusted” when it originates from the device itself, not synthesized from within JavaScript.</li>
<li><code>eventPhase</code> (number)<br />
This number represents the phase that the event is currently in: none (<code>0</code>), capture (<code>1</code>), target (<code>2</code>) or bubbling (<code>3</code>). We’ll go over event phases<a href="http://coding.smashingmagazine.com/2013/11/12/an-introduction-to-dom-events/#event-phases">next</a>.</li>
<li><code>timestamp</code> (number)<br />
This is the date on which the event occurred.</li>
</ul>
<p>Many other properties can be found on the event object, but they are specific to the type of event in question. For example, mouse events will include<code>clientX</code> and <code>clientY</code> properties on the event object to indicate the location of the pointer in the viewport.</p>
<p>It’s best to use your favorite browser’s debugger or a <code>console.log</code> to look more closely at the event object and its properties.</p>
<h3 id="event-phases">Event Phases</h3>
<p>When a DOM event fires in your app, it doesn’t just fire once where the event originated; it embarks on a journey of three phases. In short, the event flows from the document’s root to the target (i.e. capture phase), then fires on the event target (target phase), then flows back to the document’s root (bubbling phase).</p>
<p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/10/eventflow.png"><img alt="eventflow" src="http://media.smashingmagazine.com/wp-content/uploads/2013/10/eventflow.png" /></a><br />
<em>(Image source: <a href="http://www.w3.org/TR/DOM-Level-3-Events/#event-flow">W3C</a>)</em></p>
<p><a href="http://jsbin.com/exezex/4/edit?css,js,output">Demo: Slow motion event path</a></p>
<h4>CAPTURE PHASE</h4>
<p>The first phase is the capture phase. The event starts its journey at the root of the document, working its way down through each layer of the DOM, firing on each node until it reaches the event target. The job of the capture phase is to build the propagation path, which the event will travel back through in the bubbling phase.</p>
<p>As mentioned, you can listen to events in the capture phase by setting the third argument of <code>addEventListener</code> to <code>true</code>. I have not found many use cases for capture phase listeners, but you could potentially prevent any clicks from firing in a certain element if the event is handled in the capture phase.</p>
<pre><code>var form = document.querySelector('form');

form.addEventListener('click', function(event) {
  event.stopPropagation();
}, true); // Note: 'true'
</code></pre>
<p>If you’re unsure, listen for events in the bubbling phase by setting the<code>useCapture</code> flag to <code>false</code> or <code>undefined</code>.</p>
]]></content:encoded>
			<wfw:commentRss>http://thehospitalityshop.com.au/?feed=rss2&#038;p=302</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Future Of Video In Web</title>
		<link>http://thehospitalityshop.com.au/?p=300</link>
		<comments>http://thehospitalityshop.com.au/?p=300#comments</comments>
		<pubDate>Sun, 23 Mar 2014 05:51:04 +0000</pubDate>
		<dc:creator><![CDATA[PursuitTechnology]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[post]]></category>

		<guid isPermaLink="false">http://demo.themetan.com/shoptan/?p=300</guid>
		<description><![CDATA[Federico was the only other kid on the block with a dedicated ISDN line, so I gave him a call.<a class="readmore" href="http://thehospitalityshop.com.au/?p=300"><i class="fa fa-arrow-circle-right"></i>Read more...</a>]]></description>
				<content:encoded><![CDATA[<p>Federico was the only other kid on the block with a dedicated ISDN line, so I gave him a call. It had taken six hours of interminable waiting (peppered with frantic bouts of cursing), but I had just watched 60 choppy seconds of the original Macintosh TV commercial <em>in Firefox</em>, and I had to tell someone. It blew my mind.</p>
<p>Video on the Web has improved quite a bit since that first jittery low-res commercial I watched on my Quadra 605 back in 7th grade. But for the most part, videos are still separate from the Web, cordoned off by iframes and Flash and bottled up in little windows in the center of the page. They’re a missed opportunity for Web designers everywhere.</p>
<p>But how do you integrate video into an app or a marketing page? What would it look like, and how do you implement it? In this article, you will find inspiration, how-tos and a few technical goodies to get you started with modern video on the Web.</p>
<h3>When Video Leaves Its Cage</h3>
<p>Video combined with animation is a powerful tool for innovative and compelling user experiences. Imagine interactive screencasts and tutorials in which DOM elements flow and move around the page in sync with the instructor. Why not combine video with animation to walk new users through your app? Or what about including videos of your product on your marketing page, instead of static JPEGs? Getting carried away is easy — video can become little more than sophisticated blink tags if you’re not careful. But there are plenty of beautiful, inspiring examples of video tightly integrated in a design.</p>
<p>Apple’s new marketing page for the <a href="http://www.apple.com/mac-pro/">Mac Pro</a> is a stunning example of video reaching out from its cage into the surrounding content. The new Mac Pro is featured in the center of the page, and as you scroll, it swoops and spins and disassembles itself. Supporting copy fades in to describe what you are seeing.</p>
<p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/11/macpro.png"><img alt="" src="http://media.smashingmagazine.com/wp-content/uploads/2013/11/mac-pro-opt.png" /></a><br />
<em>A static screenshot of the new landing page doesn’t do the new Mac Pro justice. (<a href="http://media.smashingmagazine.com/wp-content/uploads/2013/11/macpro.png">larger view</a>)</em></p>
<p>Another great example of interactive video is Adrian Holovaty’s <a href="http://www.soundslice.com/">Soundslice</a>. Soundslice is filled with YouTube videos of music sliced and diced into tablature (or tabs), which is notation that guitar players use to learn music.</p>
<p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/11/soundslice.png"><img alt="" src="http://media.smashingmagazine.com/wp-content/uploads/2013/11/soundslice-opt.png" /></a><br />
<em>The musical bars at the bottom stay in sync with the video. (<a href="http://media.smashingmagazine.com/wp-content/uploads/2013/11/soundslice.png">larger view</a>)</em></p>
<p>When you watch a music video, the tabs are animated at the bottom in time with the music, so that you can play along with your guitar. You can even slow down the video or loop selections to practice difficult sections, and the tab animation will stay in sync.</p>
<h3>How Do You Add Video To A Design?</h3>
<p>If you venture into video and animation in your next project, you won’t have many resources to lean on for implementation. No canonical, easy-to-use, open-source library for syncing video with animation exists, so every implementation is a bit different. Should you use a JavaScript animation library or pure CSS keyframes and transitions? Should you host the videos yourself and take advantage of HTML5’s <code>video</code> tag events or use YouTube or Vimeo? And then how exactly do you tie animations to a video?</p>
<p>Together, we will explore answers to the above-mentioned questions and more as we build our own micro JavaScript framework. <a href="https://github.com/sfioritto/charlie.js">Charlie.js</a> provides an easy-to-use API for building pages with synchronized video and CSS3 animation.</p>
<p><a href="http://www.flickr.com/photos/89093669@N00/1535398417/"><img title="" alt="" src="http://media.smashingmagazine.com/wp-content/uploads/2013/11/chaplin_skates.jpg" /></a><br />
<em>Charlie.js, named in honor of Charlie Chaplin. (<a href="http://www.flickr.com/photos/89093669@N00/1535398417/">Image source</a>)</em></p>
<p>The best way to learn is by doing, so let’s dive in.</p>
]]></content:encoded>
			<wfw:commentRss>http://thehospitalityshop.com.au/?feed=rss2&#038;p=300</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SEO For Responsive Websites</title>
		<link>http://thehospitalityshop.com.au/?p=298</link>
		<comments>http://thehospitalityshop.com.au/?p=298#comments</comments>
		<pubDate>Sun, 23 Mar 2014 05:49:27 +0000</pubDate>
		<dc:creator><![CDATA[PursuitTechnology]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[post]]></category>

		<guid isPermaLink="false">http://demo.themetan.com/shoptan/?p=298</guid>
		<description><![CDATA[When Google announced its preference for user-friendly responsive websites in June 2012, I immediately saw an influx of posts that<a class="readmore" href="http://thehospitalityshop.com.au/?p=298"><i class="fa fa-arrow-circle-right"></i>Read more...</a>]]></description>
				<content:encoded><![CDATA[<p>When Google announced its preference for user-friendly responsive websites in June 2012, I immediately saw an influx of posts that equated responsive design with search engine optimization. This is unfortunate because, while responsive websites can be SEO-friendly, some responsive websites are not.</p>
<p>I’ve detailed some of the common errors that give responsive websites problems in search results in an <a href="http://searchengineland.com/how-common-are-seo-problems-with-responsive-web-design-152672">article on Search Engine Land</a> earlier this year, so it’s nice to be able to do a more in-depth SEO audit of a responsive website here on Smashing Magazine.</p>
<p>I know not everyone’s definition of SEO is the same, so for those of you who don’t know my work, it should be emphasized that fixing all of these issues with SEO will improve the user experience in general; and like <a href="http://www.smashingmagazine.com/2012/12/21/what-heck-seo-rebuttal/">most credible SEOs these days</a>, I don’t believe in manipulating search engine algorithms for short term ranking benefits.</p>
<p>The website I’d like to audit today is the US version of <a href="http://www.disneyjunior.com/">Disney Junior</a>. I’ve chosen this website for three reasons: it’s not run by a client or a partner; it exhibits a lot of the SEO issues of many responsive websites; and my two and four year olds are huge fans of the brand and often use my smartphone or our family iPad to visit it. Hopefully, Disney can use this free advice to make its website better for my kids and kids like them who search.</p>
<p>It’s worth noting that because Disney Junior is not a client or partner, there may be information about business requirements that I am not privy to. In these cases the recommendations might not be helpful to Disney Junior, but should at least be valuable as SEO best practices for responsive sites.</p>
<p>This audit of Disney’s beautiful but often frustrating website shows that mobile SEO doesn’t end once you’ve made a website responsive, and it gives Disney a framework to make its website more usable and findable on search engines.</p>
<h3>Is The Website Indexed?</h3>
<p>Disney Junior doesn’t seem to have any real issues with indexing; many of its pages have been indexed by Google. See for yourself with a simple<code>site:domain.com</code> search, or verify it in Google’s Webmaster Tools if you use it.</p>
<p><a href="https://www.google.com/search?q=site:disneyjunior.com"><img alt="Disney junior website google index" src="http://media.smashingmagazine.com/wp-content/uploads/2013/11/disneyjunior-site-google-index-500-opt.png" /></a><br />
<em>Google has indexed approximately <a href="https://www.google.com/search?q=site%3Adisneyjunior.com">1,630 pages</a> of Disney Junior. However, the descriptions indicate that we might have problems with content parity.</em></p>
<p>Obviously a website that isn’t in a search engine’s index will be invisiblewhen people search for it. This is true for responsive websites as well as for websites that use dynamic serving or dedicated mobile URLs. That being said, this tends to be more of a problem with mobile URLs because of the common practice of intentionally <code>nofollow</code>’ing mobile websites in the <code>robots.txt</code> file in order to prevent the mobile pages from competing with the “canonical” pages for link equity.</p>
<p>This practice is misguided because bidirectional annotations (or <a href="http://searchengineland.com/switchboard-tags-like-canonical-tags-but-for-mobile-seo-127676">switchboard tags</a>) can harness that link equity and bring mobile URLs into search results, but that’s neither here nor there when it comes to responsive websites.</p>
<p>While Disney Junior is indexed, some responsive websites, such as <a href="http://ididthis.idispharma.com/">Idis</a> are not so lucky. Idis is responsive and innovative, yet only one page of the website has been indexed by Google. Because the website is dynamic and because<a href="https://developers.google.com/webmasters/ajax-crawling/docs/specification"><code>_escaped_fragment_</code> hasn’t been used</a>, the URL does not change when a user clicks on different website elements, thus depriving search engines of deep links to include in their indices. If anyone searches for text on any of these pages, they won’t find this interactive, award-winning website.</p>
<p>This could happen to any website that doesn’t have static URLs, of course, but mobile SEO isn’t done once the developer has decided whether to make their website responsive or use dynamic serving or use dedicated mobile URLs.</p>
<h3>Is The Website Crawlable?</h3>
<p>In order for any website, responsive or not, to be indexed, Google must be able to crawl the website — that is, to follow a link to every unique piece of content and then store that new URL.</p>
<p>To check this, run any website crawler, such as <a href="http://home.snafu.de/tilman/xenulink.html">Xenu</a> or <a href="http://www.screamingfrog.co.uk/seo-spider/">Screaming Frog</a>. I prefer Rob Hammond’s <a href="http://robhammond.co/tools/seo-crawler">SEO Crawler</a> for mobile SEO audits because it allows you to set the smartphone Googlebot as your preferred crawler. The number of URLs is limited but enough to give you a pretty good idea of any crawlability issues. If you own the website, verifying it <a href="http://www.google.com/webmasters/">with Google</a> and <a href="http://www.bing.com/toolbox/webmaster/">with Bing</a> is imperative. Both search engines have tools for developers that specify the crawl errors they encounter, and Google even lets you tell it to ignore certain parameters that might be causing problems. If you don’t own the website or can’t verify it, you can still identify most problems by crawling the website as described above.</p>
<p>When I crawled Disney Junior, it quickly became apparent that the content is hosted on several URLs: <code>DisneyJunior.com</code>, <code>DisneyJunior.Disney.com</code>,<code>WatchDisneyJunior.Go.com</code> and <code>Disney.Go.com/DisneyJunior</code>. This could hinder a search engine from assigning page authority, because a search engine’s spider has a <a href="http://www.blindfiveyearold.com/crawl-optimization">limited crawl budget for every website</a>, based on that website’s PageRank, so if you’re splitting your PageRank between four URLs and three domains, then you’re possibly presenting to Google a website architecture that is less than optimal. More on this later in the section about duplicate content.</p>
<p>Disney’s URLs themselves don’t seem to have any major issues with crawlability because they are mainly static URLs, which search engines have an easier time with. However, the site map could certainly be improved upon. Search engines jointly announced <a href="http://sitemaps.org/">Sitemaps</a> a few years ago as the convention for finding content on websites to index. <code>DisneyJunior.Disney.com</code> does have a site map, but there are a few problems with it, the biggest being that it’s a video site map that contains more than just videos.</p>
<p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/10/disney-junior-video-sitemap1.jpg"><img alt="disney junior video site map" src="http://media.smashingmagazine.com/wp-content/uploads/2013/11/disney-junior-video-sitemap-500-opt.png" /></a></p>
<p>Site maps are a way for site owners to communicate directly with search engines, so making the information as accurate as possible and not confusing search engines are imperative. Google has <a href="https://support.google.com/webmasters/topic/20986?hl=en&amp;ref_topic=8476">site maps for the many different kinds of content</a> included on Disney Junior, so presenting separate maps for images, videos, HTML documents and so on would be best.</p>
<p>Crawlability is not a mobile-specific problem, but getting it wrong can harm a website intended for mobile users just as easily as it can harm a traditional website, and it needs to be done right regardless.</p>
<h4>RECOMMENDATION</h4>
<ul>
<li>Disney should consider hosting all content on a single subdomain to ensure that search engines can properly identify page authority and to ensure that all relevant URLs are crawled efficiently.</li>
<li>Disney should also consider breaking down its single video site map, which contains all types of content, into individual site maps for HTML content, image content, video content, etc.</li>
</ul>
<h3>Is The Website Readable Without Images, Flash Or JavaScript Enabled?</h3>
<p>A search engine cannot factor what it can’t see into the overall relevance of a page. And while Google can do some amazing things with optical character recognition in Google Glass, Google Drive and Google Goggles, it still <a href="http://www.youtube.com/watch?v=Ji05CqWi3ws">only reads text</a> for Google Search. As it says in its “<a href="https://support.google.com/webmasters/answer/35769#1">Webmaster Guidelines</a>”:</p>
<blockquote>
<ul>
<li>Create a useful, information-rich website, and write pages that clearly and accurately describe your content.</li>
<li>Think about the words users would type to find your pages, and make sure that your website actually includes those words within it.</li>
<li>Try to use text instead of images to display important names, content, or links. The Google crawler doesn’t recognize text contained in images. If you must use images for textual content, consider using the “ALT” attribute to include a few words of descriptive text.</li>
</ul>
</blockquote>
<p>Is Disney’s responsive website text-based and information-rich, and does it include terms that people would actually use when searching? Not really. If we look at the website through a simple text browser, like <a href="http://www.seo-browser.com/">SEO-Browser.com</a>, to get a better sense of how a search engine sees the website, then we get a much different picture than accessing it in a browser:</p>
<p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/11/disney-junior-text-comparison-opt.png"><img alt="disney junior text comparison" src="http://media.smashingmagazine.com/wp-content/uploads/2013/11/disney-junior-text-comparison-500-opt.png" /></a></p>
<p>Unlike websites that embed keywords in images or in Flash, search engines aren’t blocked from seeing relevant content here — there’s just not a lot of relevant content to see. The website isn’t readable in this case because there are no words to read.</p>
<p>If we look at a deeper-level page, we’d see some graphic text that search engines would have a hard time accurately processing.</p>
<p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/10/sandwich-illustration.jpg"><img alt="2013-09-23_15-47-07" src="http://media.smashingmagazine.com/wp-content/uploads/2013/11/browser-search-engine-view-500-opt.jpg" /></a></p>
<p>The text beginning with “Watch Sam Sandwich…” is accessible, but the words in the logo “The Bite-Sized Adventures of Sam Sandwich” are not because they are embedded as a graphic.</p>
<h4>RECOMMENDATION</h4>
<ul>
<li>At the very least, Disney should make embedded text accessible as <code>alt</code>text.</li>
<li>When the text is substantial, the developer should consider making it accessible in a Web font, rather than as an embedded graphic.</li>
<li>Furthermore, the volume of relevant keywords, such as “games for kids” and other non-brand words, should be increased. This could be done by slightly expanding the text block on each page or, ideally, by designing the page to include some scannable text, keeping progressive enhancement in mind.</li>
</ul>
<h3>Is The Website Easy To Link To And Share?</h3>
<p>Many websites, both responsive and not, have URLs that don’t seem to be intended for human consumption. This is detrimental to SEO, of course, mostly because the URLs aren’t memorable and are difficult to share. Given how important search engines view sharing and linking when ranking pages, the more we can do to facilitate linking and sharing, the better off we’ll be in search results.</p>
<p>The print and video URLs for Disney Junior fall into this category, adding random characters to otherwise memorable paths (<code>http://disneyjunior.com/print/stethoscope-4e4e43e2e8368d71cf2086da</code>). For the most part, though, the URLs include keywords and are easy for users and search engines to understand.</p>
<p>The website could go one step further and include social bookmarklets toenable users to share content on social networks. Disney Junior has an active presence on Facebook, Twitter and YouTube, so its creators must understand the value of social media. But they might not understand that leveraging social media is becoming important to organic discovery and search. And given that <a href="http://techcrunch.com/2013/08/13/facebook-mobile-user-count/">78% of Facebook’s user base is mobile</a> and that <a href="http://www.comscore.com/Insights/Presentations_and_Whitepapers/2013/2013_Mobile_Future_in_Focus">mobile users spend more time</a> on social networks than PC users, then helping mobile searchers share content whenever they’d like makes sense. Of course, the Children’s Online Privacy Protection Act (COPPA) prohibits this for sites intended for children, but <a href="http://disney.go.com/disneyjunior/for-grown-ups">Disney Junior for Grown-Ups</a> is fair game.</p>
<p>This isn’t a tutorial on how to make social buttons work on a responsive website, but <a href="https://developers.facebook.com/docs/web/gettingstarted/mobile/">Facebook’s mobile “Like” button works on responsive websites</a>. However, for performance considerations, it’s a good idea to use <a href="http://cferdinandi.github.io/social-sharing/">social sharing buttons</a> or <a href="http://filamentgroup.com/lab/socialcount/">SocialCount</a> that use lazy loading to load the actual social scripts on click. If you use a third-party plugin, such as AddThis, <a href="http://bryanhadaway.com/how-to-make-addthis-responsive/">there are ways</a> to make those compatible with a responsive website as well.</p>
<h4>RECOMMENDATION</h4>
<p>To increase referrals from social networks and to facilitate content discovery, Disney Junior for Grown-Ups should incorporate social-sharing buttons that are responsive, that add to the overall experience but that don’t significantly increase page-loading time.</p>
<h3>Does The Website Display Content For Users’ Needs, Regardless Of The Device Used?</h3>
<p>Those who champion “<a href="http://bradfrostweb.com/blog/mobile/content-parity/">content parity</a>” have a worthy cause in making websites accessible to everyone, regardless of device. Unfortunately, the issue is a <a href="http://marketingland.com/book-review-content-strategy-for-mobile-by-karen-mcgrane-34269">little complicated</a>. Making content available on all platforms is sometimes good for users, other times not.</p>
<p>Disney Junior is fairly representative. It deprives users of relevant content, fails to connect relevant content to users who need it, and gives users content that they have no chance in the world of ever using. Unfortunately, in my experience this is fairly typical of responsive websites, many of which don’t go far enough to make all content accessible, regardless of device, and which provide content that’s unusable on mobile devices.</p>
<p>Google sees one weakness so often on mobile websites that it has threatened to penalize for it in smartphone search results: unplayable videos. In June 2013,<a href="https://developers.google.com/webmasters/smartphone-sites/common-mistakes">Google said</a> this:</p>
<blockquote><p>“We recommend using HTML5 standard tags to include videos and avoid content in formats, such as Flash, that are not supported by all mobile devices. Regardless, try your best to offer smartphone users the best experience possible to make sure that the videos are playable on as many devices as possible.”</p></blockquote>
<p>So, when I encounter many screens like the following when trying to play Disney Junior videos, I get a little concerned:</p>
<p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/10/disney-junior-unplayable-videos2.jpg"><img alt="Telling users that their device does not support something may lower your ranking in Google smartphone search (large preview)." src="http://media.smashingmagazine.com/wp-content/uploads/2013/11/disney-junior-unplayable-videos-500-opt.png" /></a><br />
<em>Not supporting a piece of content for mobile users could lower your ranking in smartphone search results.</em></p>
<p>In some cases, though, Disney Junior goes too far with content parity. The four main sections of the website are games, videos, printables and a live feed. The problem is that unless a user is not only aware of <a href="http://www.google.com/cloudprint/learn/">Google Cloud Print</a> but is one of the handful of people who has it installed on their device, they won’t have any way to print the coloring pages or other printables.</p>
]]></content:encoded>
			<wfw:commentRss>http://thehospitalityshop.com.au/?feed=rss2&#038;p=298</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Brainwriting For Rapid Idea Generation</title>
		<link>http://thehospitalityshop.com.au/?p=296</link>
		<comments>http://thehospitalityshop.com.au/?p=296#comments</comments>
		<pubDate>Sun, 23 Mar 2014 05:47:46 +0000</pubDate>
		<dc:creator><![CDATA[PursuitTechnology]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[post]]></category>

		<guid isPermaLink="false">http://demo.themetan.com/shoptan/?p=296</guid>
		<description><![CDATA[When a group wants to generate ideas for a new product or to solve a problem, you will usually hear<a class="readmore" href="http://thehospitalityshop.com.au/?p=296"><i class="fa fa-arrow-circle-right"></i>Read more...</a>]]></description>
				<content:encoded><![CDATA[<p>When a group wants to generate ideas for a new product or to solve a problem, you will usually hear the clarion call, “Let’s brainstorm!” You assemble a group, spell out the basic ground rules for brainstorming (no criticism, wild ideas are welcome, focus on quantity, combine ideas to make better ideas) and then have people yell out ideas one at a time.</p>
<p>Brainstorming is often the method of choice for ideation, but it is fraught with problems that range from participants’ fear of evaluation to the serial nature of the process — only one idea at a time. Brainwriting is an easy alternative or a complement to face-to-face brainstorming, and it often yields more ideas in less time than traditional group brainstorming.</p>
<h3>What Is Brainwriting?</h3>
<p>When I teach my graduate course in “Prototyping and Interaction Design,” I start with a class on ways to generate ideas. Because brainstorming is a well-known and popular technique, I generally begin with a discussion on how to do good brainstorming, something that is very hard, and then introduce brainwriting as a worthy, and sometimes preferred, alternative to brainstorming. The term “brainwriting” often brings forth smiles and quiet laughter because it is a strange word.</p>
<p>Brainwriting is simple. Rather than ask participants to yell out ideas (a serial process), you ask them to write down their ideas about a particular question or problem on sheets of paper for a few minutes; then, you have each participant pass their ideas on to someone else, who reads the ideas and adds new ideas. After a few minutes, you ask the participants to pass their papers to others, and the process repeats. After 10 to 15 minutes, you collect the sheets and post them for immediate discussion.</p>
<p>In my experience, the number of ideas generated from brainwriting often exceeds what you’d expect from face-to-face brainstorming because you’ve reduced anxiety somewhat, followed a parallel process in which a dozen people may add items simultaneously, and reduced the amount of extraneous talk that happens during brainstorming, which takes time away from idea generation.</p>
<p><a href="http://www.flickr.com/photos/opensourceway/4378920267/"><img alt="brainwriting-4-opt" src="http://media.smashingmagazine.com/wp-content/uploads/2013/12/brainwriting-4-opt.jpg" /></a><br />
<em>Instead of getting one idea at a time, lots of ideas can emerge simultaneously, if you let your participants “brainwrite” them. (Image credits: <a href="http://www.flickr.com/photos/opensourceway/4378920267/">opensourceway</a>)</em></p>
<h3>When To Use Brainwriting</h3>
<p>Brainwriting can be used in the following situations:</p>
<ul>
<li>You have too large a group for effective brainstorming. You could conduct brainwriting at a conference of 500 people simply by leaving a large card on each seat, asking a question, and then having each audience member pass a card to someone else, and then repeat three times for a minute of writing.</li>
<li>You have quiet people in your group who are intimidated by traditional brainstorming.</li>
<li>You are working in a culture in which brainstorming about “wild ideas” or expressing ideas that diverge from those of senior management is not accepted.</li>
<li>Your time is limited. I’ve used brainwriting to brainstorm questions for a website visit when I had only 10 minutes to get feedback from the product team. I ended up with more than 50 different questions, without the fuss of having to set up a formal brainstorming session.</li>
<li>You don’t have an experienced moderator. Brainstorming, contrary to what many blog posts claim, is difficult to do well. Brainwriting, in contrast, requires that you be able to ask a question, read a clock and collect answers.</li>
<li>You are worried about loud or forceful individuals influencing others, as they might in traditional brainstorming.</li>
</ul>
<p>Brainwriting can be used to understand how different groups view an issue. You might try to conduct separate brainwriting sessions with different internal groups. For example, if you asked groups to brainwrite about “What are the most important problems faced by our customers?” you might find that developers have a different perspective from the UX team, who have a different perspective from product managers. In my experience, the differences emerge more strongly through brainwriting than through face-to-face brainstorming.</p>
<p>&nbsp;</p>
<p>Source: smashingmagazine.com</p>
]]></content:encoded>
			<wfw:commentRss>http://thehospitalityshop.com.au/?feed=rss2&#038;p=296</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reinventing The Tech Experience</title>
		<link>http://thehospitalityshop.com.au/?p=288</link>
		<comments>http://thehospitalityshop.com.au/?p=288#comments</comments>
		<pubDate>Sat, 22 Mar 2014 06:06:17 +0000</pubDate>
		<dc:creator><![CDATA[PursuitTechnology]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[post]]></category>

		<guid isPermaLink="false">http://demo.themetan.com/shoptan/?p=288</guid>
		<description><![CDATA[If you had to name one thing that could have been better at the last conference or meetup you attended,<a class="readmore" href="http://thehospitalityshop.com.au/?p=288"><i class="fa fa-arrow-circle-right"></i>Read more...</a>]]></description>
				<content:encoded><![CDATA[<p>If you had to name one thing that could have been better at the last conference or meetup you attended, what would it be? I bet you’d say that the content or the interaction could have been better in some way. I created<a href="http://onslyde.com/#%21/home">Onslyde</a> to solve this problem. It’s a free service and <a href="https://github.com/onslyde">open-source project</a> that (hopefully) will make public speaking easier and conferences better.</p>
<p>The motivation for the project came from my own speaking engagements in the tech industry. I wanted to see how many people in the audience actually agreed or disagreed with what I was saying. I also wanted to leverage their experience and knowledge to create a better learning environment.</p>
<p>Presentations today are mostly unidirectional, with a single presenter giving information to the audience. But it doesn’t have to be that way. Now, with the ubiquity of mobile devices, everyone in the room can contribute to the conversation and make it better. Many books have been written on the topic of collective wisdom. In <a href="http://en.wikipedia.org/wiki/The_Wisdom_of_Crowds"><em>The Wisdom of Crowds</em></a>, James Surowiecki states:</p>
<blockquote><p>“… a diverse collection of independently deciding individuals is likely to make certain types of decisions and predictions better than individuals or even experts.”</p></blockquote>
<p>For the past year, I have been putting this thesis to the test, enabling people to interact with and change the content that I deliver. It’s been a lot of fun and work, and now you get to see the result.</p>
<h3>Ratings And Feedback</h3>
<p>When we look at current systems of rating and feedback at conferences, most of them are reactive, meaning that participants rate the session after it’s over. This is why most people don’t even rate sessions, unless they are asked or forced to by the doorkeeper. Those who do rate sessions might not care to be accurate (giving all 5s or 4s and then hurrying to the coffee line). Other attendees might have enjoyed the majority of the talk, but then got upset by the last slide or by the way the speaker ended the talk.</p>
<p>If these people decided to rate the presentation, how many stars do you think they would give? Perhaps 3 or 4 stars because of their anger at the end, but who really knows? Without context, a low rating doesn’t tell the speaker which part of the talk an attendee didn’t like.</p>
<p>Real-time feedback gives context to a rating, making traditional feedback unnecessary. Conference organizers and speakers no longer have to rely solely on Twitter hash tags and reactive ratings to see how well things went. We can now visualize exactly how the audience felt at any millisecond of a presentation.</p>
<h4>REAL-TIME RATINGS WITH ONSLYDE</h4>
<p>Giving a presentation that allows for real-time feedback is like riding a bicycle down a really steep hill for the first time. You have no idea whether you will crash and burn or come out with an adrenaline-filled scream at the other end. And it’s just as much fun for the audience.</p>
<p>With Onslyde, you get an accurate measure from the audience while you’re speaking. If you see that a lot of people are disagreeing with what you’re saying, you can adapt: Ask audience members for their thoughts, or maybe move on to another topic. When you’re presenting, actually seeing how the audience collectively feels in real time and then responding accordingly is a very cool experience.</p>
<p>The worst thing a presenter can do is tell the audience something it already knows or say something totally wrong. The audience wants to be intrigued and entertained by you. But too many speakers seem to think this requires GIFs of cats. Well, I don’t want to spoil anyone’s fun but I’m an adult now, and I don’t go to thousand-dollar conferences to look at funny pictures of cats. I do want to be able to challenge you, engage with the content and tell you when you’re wrong.</p>
<p>So, let’s talk about how the audience indicates whether you’re right or wrong. Onslyde’s remote control gives audience members between two and four ways to interact, depending on the type of session. It works for both normal presentations and panel discussions.</p>
<p>For presentations:</p>
<ul>
<li>Any slide can be agreed or disagreed with.</li>
<li>Presenters can poll the audience by asking a question and giving two answers to choose from.</li>
<li>Remote devices are updated with content for each slide.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://thehospitalityshop.com.au/?feed=rss2&#038;p=288</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello world!</title>
		<link>http://thehospitalityshop.com.au/?p=539</link>
		<comments>http://thehospitalityshop.com.au/?p=539#comments</comments>
		<pubDate>Sat, 08 Mar 2014 09:49:19 +0000</pubDate>
		<dc:creator><![CDATA[PursuitTechnology]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://demo.themetan.com/shoptan/?p=1</guid>
		<description><![CDATA[Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!]]></description>
				<content:encoded><![CDATA[<p>Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!</p>
]]></content:encoded>
			<wfw:commentRss>http://thehospitalityshop.com.au/?feed=rss2&#038;p=539</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
