<?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 Distance</title>
	<atom:link href="http://thedistance.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://thedistance.co.uk</link>
	<description>eCommerce, mobile apps &#38; digital marketing</description>
	<lastBuildDate>Wed, 22 Feb 2012 18:16:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>How to get more 5 star app reviews</title>
		<link>http://thedistance.co.uk/journal/2012-01/how-to-get-more-5-star-app-reviews</link>
		<comments>http://thedistance.co.uk/journal/2012-01/how-to-get-more-5-star-app-reviews#comments</comments>
		<pubDate>Wed, 25 Jan 2012 11:38:52 +0000</pubDate>
		<dc:creator>Elliot Neal</dc:creator>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[Mobile Applications]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[User Reviews]]></category>

		<guid isPermaLink="false">http://thedistance.co.uk/?p=2988</guid>
		<description><![CDATA[The importance of user reviews in the success or failure of your iOS application cannot be overstated. Alongside your application name and icon, it&#8217;s one of the most prominent pieces of information visible on the App Store. Having a poor average rating can lead to your app being ignored by prospective users and reduces the [...]]]></description>
			<content:encoded><![CDATA[<p>The importance of user reviews in the success or failure of your iOS application cannot be overstated. Alongside your application name and icon, it&#8217;s one of the most prominent pieces of information visible on the App Store. Having a poor average rating can lead to your app being ignored by prospective users and reduces the likelihood of getting any press reviews.</p>
<p><span id="more-2988"></span></p>
<p style="text-align: center;"><img class="size-full wp-image-3158  aligncenter" src="http://thedistance.co.uk/wp-content/uploads/2012/01/IMG_1420-418x6271.png" alt="" width="251" height="376" /></p>
<h3>The Basics</h3>
<p>Applications that crash frequently, get bad reviews.<br />
Applications with a convoluted interface, get bad reviews.<br />
Applications that don&#8217;t behave as expected, get bad reviews.</p>
<p>Hopefully these are all obvious; there are no miracles that you can perform to get good reviews on a bad application. Sorry.</p>
<p>A good description on the App Store is essential. You are much more likely to get a bad review from a user who has bought your application thinking it does something that it doesn&#8217;t, than a user who just doesn&#8217;t like it. This seems strange, but negative reviews usually come from users who are in a negative emotional state, and when comparing <em>&#8220;Nice, but not for me&#8221;</em> to <em>&#8220;This doesn&#8217;t do what they told me&#8221;</em>, the difference is clear.</p>
<p>Price is also definitely worth thinking about. There&#8217;s a lot that has been said about the trend towards $1 apps (£0.69), and the positive and negative impacts that it has had. One thing is for sure though, it has helped to build an ecosystem of <em>impulse buyers</em>. There is nothing that you can do about the fact that some people are going to buy your application and not like it, but what you can do is try to manage their reactions. A lower price point will reduce the likelihood that these users will come away feeling you have <em>robbed</em> them, an emotion that will often lead to a retaliatory negative review.</p>
<h3>Pointing them in the Right Direction</h3>
<p>It doesn&#8217;t matter how simple your application is, you&#8217;re going to receive support requests. It&#8217;s easy to write these off as an inconvenience, when in fact they are a great opportunity to communicate directly with one of your users. Try to respond quickly and make sure to be as friendly and personable as possible. If they&#8217;re asking for help, provide it; if they&#8217;re requesting a feature, either tell them you&#8217;re working on it or explain why you&#8217;re not; if they have a complaint, try to understand where their problem lies and help to resolve it. Once you&#8217;ve done this, sign off with a reminder that App Store reviews are important: <em>&#8220;Don&#8217;t forget to write a review on the App Store :)&#8221;</em> or something similar. Most users will be grateful for your help, and signing off like this reminds them that they can reciprocate.</p>
<p>Apple often use the phrase: <em>surprise and delight your users,</em> which seems very abstract in the context of application design. Support requests are a real chance to fulfil this statement.</p>
<h3>Driving Reviews in your App</h3>
<p>Not everyone is going to need support, most users will work out how to use your application on their own. Motivating these users to write reviews is more difficult, and requires some modifications to your application.</p>
<p>I know what a lot of you are thinking: throw up an alert on launch every now and then that asks the user to write a review. No. Don&#8217;t do that. I hate that. This has started showing up more and more in applications, and I&#8217;m going to tell you why it&#8217;s wrong.</p>
<div id="attachment_3019" class="wp-caption aligncenter" style="width: 261px"><img class="size-medium wp-image-3019 " title="AnnoyingAlert" src="http://thedistance.co.uk/wp-content/uploads/2012/01/IMG_1421-418x419.png" alt="Launch modal Alert" width="251" height="251" /><p class="wp-caption-text">Seriously, don&#39;t do this.</p></div>
<p>Throwing up an alert on launch is akin to a popup ad on a website: it&#8217;s infuriating, unnecessary, distracting&#8230; I could go on. Alerts should be reserved for critical situations where the user must respond to a condition, not for pestering your users with review requests.</p>
<p>A much better way to do this is providing a link somewhere in your application that the user can discover. That means don&#8217;t put it on the landing screen. As iOS developers (especially on the iPhone) we&#8217;re writing applications that are often used for very short periods of time, in which the user isn&#8217;t going to be able to write a review. By placing this link somewhere out of the way, perhaps on a <em>Settings</em> or <em>About</em> screen, you&#8217;re more likely to catch a user that has some spare time and is exploring your application.</p>
<div id="attachment_3024" class="wp-caption aligncenter" style="width: 261px"><img class="size-medium wp-image-3024 " title="EnvelopesAboutPage" src="http://thedistance.co.uk/wp-content/uploads/2012/01/IMG_1422-418x627.png" alt="About page for Envelopes" width="251" height="376" /><p class="wp-caption-text">The right way to do it</p></div>
<p>And if you still don&#8217;t believe me, my app <a href="http://itunes.apple.com/us/app/envelopes/id372593979?mt=8" rel="external">Envelopes</a> has an average rating of 4.5 stars over all versions, and 5 stars since I put the review driving link in the app.</p>
]]></content:encoded>
			<wfw:commentRss>http://thedistance.co.uk/journal/2012-01/how-to-get-more-5-star-app-reviews/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The introduction of Ice Cream Sandwich in Android</title>
		<link>http://thedistance.co.uk/journal/2012-01/the-introduction-of-ice-cream-sandwich-in-android</link>
		<comments>http://thedistance.co.uk/journal/2012-01/the-introduction-of-ice-cream-sandwich-in-android#comments</comments>
		<pubDate>Fri, 13 Jan 2012 11:24:52 +0000</pubDate>
		<dc:creator>Pete Harris</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://thedistance.co.uk/?p=2929</guid>
		<description><![CDATA[In February 2011 Google released a tablet-only version of their Android operating system codenamed &#8220;Honeycomb&#8221;.  This included changes to user interface to support large screen devices, and was incompatible with phone-sized devices. Due to this fragmentation of operating system versions, with a wide range of use-cases for designers to consider and few guidelines to follow, [...]]]></description>
			<content:encoded><![CDATA[<p>In February 2011 Google released a tablet-only version of their Android operating system codenamed &#8220;Honeycomb&#8221;.  This included changes to user interface to support large screen devices, and was incompatible with phone-sized devices.</p>
<p>Due to this fragmentation of operating system versions, with a wide range of use-cases for designers to consider and few guidelines to follow, various complex solutions to similar problems have been developed leading to inconsistent user interfaces, a difficult job for developers and most importantly disappointing experiences for users.</p>
<p><span id="more-2929"></span></p>
<p>This is an important issue as <a href="http://thedistance.co.uk/what-we-do/app-development/iphone-development/">iPhone development</a> targets two known devices with a very consistent layout and style guidelines.  The Android platform has often been accused of fragmentation and these difficulties for developers can make it difficult to compete.</p>
<p>In October 2011, Google released a new version of their Android operating system codenamed &#8220;Ice Cream Sandwich&#8221; (ICS).  This release combines the tablet-specific changes of Honeycomb with updated mobile phone functionality to create a single operating system which runs on a remarkably wide range of Android devices.</p>
<p>To support these changes to the user interface, Google have released a design guide to enable designers to &#8220;<a href="http://developer.android.com/design/" rel="external">learn how to design exceptional Android apps</a>.&#8221;.</p>
<p>This website highlights the new and innovative features available when creating Android user interfaces, with suggestions how to cope with the differing target devices when designing apps.</p>
<p>It may be a while before manufacturers are able to provide &#8220;Ice Cream Sandwich&#8221; for their devices, but app designers have been given a great system to work with in Ice Cream Sandwich and designers now have good resources available which should result in a great wealth of exceptional apps over the coming years.  Based on the new devices announced at the 2012 Consumer Electronics Show, manufacturers agree and see a great future for the Android platform.</p>
<p>Ice Cream Sandwich is certainly something we are looking forward to incorporating into our <a href="http://thedistance.co.uk/what-we-do/app-development/android-development/">Android app development</a> processes going forward.</p>
]]></content:encoded>
			<wfw:commentRss>http://thedistance.co.uk/journal/2012-01/the-introduction-of-ice-cream-sandwich-in-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The growth of Android</title>
		<link>http://thedistance.co.uk/journal/2011-12/the-growth-of-android</link>
		<comments>http://thedistance.co.uk/journal/2011-12/the-growth-of-android#comments</comments>
		<pubDate>Tue, 13 Dec 2011 13:45:39 +0000</pubDate>
		<dc:creator>Anthony Main</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Mobile Applications]]></category>

		<guid isPermaLink="false">http://thedistance.co.uk/?p=2734</guid>
		<description><![CDATA[Last week Google announced that their platforms app store &#8211; Android Market has reached over 10 billion app downloads. An increase in 1 billion in only a month, whereas it took it 22 months to reach the first 1 billion downloads. To celebrate Google are severely discounting a large number of its apps each day down to [...]]]></description>
			<content:encoded><![CDATA[<p>Last week Google announced that their platforms app store &#8211; Android Market has reached over 10 billion app downloads. An increase in 1 billion in only a month, whereas it took it 22 months to reach the first 1 billion downloads. To celebrate Google are severely discounting a large number of its apps each day down to 10p to celebrate.</p>
<p>This does not suprise me as during our recent App Challenge event, when posed the question, over 70% of the students stated they owned Android devices and planned to target this platform over iOS despite the potential revenue they may be able to achieve. Apple recently stated that they have given over $1 billion dollars back to developers on their platform.</p>
<p>Despite what seems huge growth in Android sales, hitting 46% market penetration, HTC &#8211; one of the world&#8217;s largest Android device manufacturers announced a 20% drop in sales figures during the last quarter.</p>
<p>Is the demand finally dropping or is the smart phone market simply saturated now and users are getting more app savvy?</p>
<p>To find out how our dedicated team of Android developers can fulfill your <a href="http://thedistance.co.uk/what-we-do/app-development/" title="App Development">app development</a> requirements get in <a title="Contact Us" href="http://thedistance.co.uk/contact-us">touch</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://thedistance.co.uk/journal/2011-12/the-growth-of-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to add Facebook Like buttons to Magento Go product pages</title>
		<link>http://thedistance.co.uk/journal/2011-12/how-to-add-facebook-like-buttons-to-magento-go-product-pages</link>
		<comments>http://thedistance.co.uk/journal/2011-12/how-to-add-facebook-like-buttons-to-magento-go-product-pages#comments</comments>
		<pubDate>Mon, 12 Dec 2011 12:39:43 +0000</pubDate>
		<dc:creator>Jamie Stead</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[Extensions]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[magento go]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://thedistance.co.uk/?p=2655</guid>
		<description><![CDATA[Recently a client of ours asked if we could add a Facebook Like button to all of the products on their Magento Go site, the idea being that when the button was pressed it would then add the link to that particular product to their Facebook page. In Magento Community this wouldn&#8217;t be too much [...]]]></description>
			<content:encoded><![CDATA[<p>Recently a client of ours asked if we could add a Facebook Like button to all of the products on their Magento Go site, the idea being that when the button was pressed it would then add the link to that particular product to their Facebook page.</p>
<p>In Magento Community this wouldn&#8217;t be too much of a problem, however this particular site is a Magento Go store which doesn&#8217;t have the same amount of customisability or extensions. A quick search of the Magento Go documentation brought up a page showing how to add social networking links to Magento Go through a static block, but no reference to what code would be needed to actually connect to Facebook.</p>
<p><span id="more-2655"></span></p>
<p>The code supplied by Facebook themselves requires placing code in sections of the page not available to edit in Magento Go, so things looked to have come to a stand still. However, through a bit of perseverance and good old Google, we came across the following code:</p>
<pre class="brush: php; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot;&gt;
var likeIt = '&lt;iframe src=&quot;http://www.facebook.com/plugins/like.php?href='+document.URL+'&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; style=&quot;border:none; width:450px; height:80px;&quot;&gt;&lt;/iframe&gt;';
document.write(likeIt);
&lt;/script&gt;
</pre>
<p>Then, by following the previously mentioned Magneto Go <a href="http://go.magento.com/support/kb/entry/name/how-to-add-social-media-buttons" rel="external" target="_blank">guide to adding social networking buttons</a>, we created a static block that would show on every product page, allowing users of the site to &#8220;like&#8221; individual products, driving more traffic to the site.</p>
<p>The above code was added to Github by an anonymous user at the following <a href="https://gist.github.com/1132915#file_magentogo_fblike.js" rel="external" target="_blank">link</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://thedistance.co.uk/journal/2011-12/how-to-add-facebook-like-buttons-to-magento-go-product-pages/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Magento Go partnership &amp; our first sites go live</title>
		<link>http://thedistance.co.uk/journal/2011-11/magento-go-partnership-our-first-site-goes-live</link>
		<comments>http://thedistance.co.uk/journal/2011-11/magento-go-partnership-our-first-site-goes-live#comments</comments>
		<pubDate>Tue, 15 Nov 2011 13:29:21 +0000</pubDate>
		<dc:creator>Ryan Atkins</dc:creator>
				<category><![CDATA[Client News]]></category>
		<category><![CDATA[Company News]]></category>
		<category><![CDATA[eCommerce]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[magento go]]></category>
		<category><![CDATA[partnerships]]></category>

		<guid isPermaLink="false">http://thedistance.co.uk/?p=2044</guid>
		<description><![CDATA[The last couple of months has been a great time for us with the introduction of a couple of new team members and our official partnership with Magento Go due in no small part to our fantastic and increasingly successful clients, for which we are very grateful. What is Magento Go and why are we [...]]]></description>
			<content:encoded><![CDATA[<div class='fright' style='max-width:50%'><img src="http://thedistance.co.uk/wp-content/uploads/2011/09/magento-go1.jpeg" alt="[Magento Go logo]" title="Magento Go" class="size-full wp-image-2041" /></div>
<p>The last couple of months has been a great time for us with the introduction of a couple of new team members and our <a href="http://go.magento.com/design-services" title="Magento Go Design Partners Page" rel="external">official partnership with Magento Go</a> due in no small part to our fantastic and increasingly successful clients, for which we are very grateful.</p>
<p><span id="more-2044"></span></p>
<h3>What is Magento Go and why are we partners?</h3>
<p>Magento Go is Magento&#8217;s new solution to entry level eCommerce, it is a hosted solution that allows rapid deployment of feature rich ecommerce sites. </p>
<p><iframe width="560" height="345" src="http://www.youtube.com/embed/Icbhg2eEndw" frameborder="0" allowfullscreen></iframe></p>
<p>Partnering with Magento Go now allows us to bring clients onboard at an earlier stage of their ecommerce venture due to it&#8217;s turnkey approach. Essentially it allows us to offer much lower fees for launching an ecommerce site. </p>
<p>We work with our clients to grow their business and the Magento platform will scale to do the same through Community, Professional and Enterprise editions, now with a beginners step, Magento Go.</p>
<h3>A couple of recent Magento Go sites</h3>
<p>Since becoming partners we have launched our first two Magento Go sites. Take a quick look at those below.</p>
<h4>My Thoughtful Friend</h4>
<p><img src="http://thedistance.co.uk/wp-content/uploads/2011/11/mythoughtfulfriend.com-2011-11-15-1215321.png" alt="" title="My Thoughtful Friend" class="aligncenter size-full wp-image-2533 boxed" /></p>
<p>For more information checkout <a href="http://mythoughtfulfriend.com" rel="external">mythoughtfulfriend.com</a> or the <a href="http://thedistance.co.uk/clients/my-thoughtful-friend">My Thoughtful Friend client page</a> on our site.</p>
<h4>Eyesore Merch</h4>
<p><img src="http://thedistance.co.uk/wp-content/uploads/2011/11/eyesoremerch.com-2011-11-14-1158471.png" alt="" title="Eyesore Merch" class="aligncenter size-full wp-image-2534 boxed" /></p>
<p>For more information checkout <a href="http://eyesoremerch.com" rel="external">eyesoremerch.com</a> or the <a href="http://thedistance.co.uk/clients/eyesore-merch">Eyesore Merch client page</a> on our site.</p>
]]></content:encoded>
			<wfw:commentRss>http://thedistance.co.uk/journal/2011-11/magento-go-partnership-our-first-site-goes-live/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing&#8230;The App Challenge 2011</title>
		<link>http://thedistance.co.uk/journal/2011-10/introducing-the-app-challenge-2011</link>
		<comments>http://thedistance.co.uk/journal/2011-10/introducing-the-app-challenge-2011#comments</comments>
		<pubDate>Mon, 24 Oct 2011 13:38:30 +0000</pubDate>
		<dc:creator>Anthony Main</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Company News]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Mobile Applications]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[The App Challenge]]></category>

		<guid isPermaLink="false">http://thedistance.co.uk/?p=2387</guid>
		<description><![CDATA[Having our office on the University of York campus has been beneficial from the outset. It has provided us with the opportunity to interact with a wealth of other small businesses and projects. In order to encourage growth into the emerging mobile industry we are coordinating with the University careers department to run The App [...]]]></description>
			<content:encoded><![CDATA[<p>Having <a title="Ron Cooke Hub" href="http://thedistance.co.uk/who-we-are/our-environment/">our office</a> on the University of York campus has been beneficial from the outset. It has provided us with the opportunity to interact with a wealth of other small businesses and projects.</p>
<p>In order to encourage growth into the emerging mobile industry we are coordinating with the University careers department to run The App Challenge event.</p>
<p><span id="more-2387"></span></p>
<p>The event will offer the opportunity for registered students to learn more about the process of designing a mobile app and bringing it to the market. By inviting students of all disciplines we are hoping it will encourage interest in aspects of the <a title="App Development" href="http://thedistance.co.uk/what-we-do/app-development/">app creation</a> process.</p>
<p>A series of bootcamps and workshops will be held to educate the students from our company&#8217;s and the team at <a title="Yatterbox" href="http://www.yatterbox.co.uk">Yatterbox&#8217;s</a> experience of developing mobile applications.</p>
<p>The focus of the events will cover all areas of the development lifecycle from idea brain storming to monetisation and marketing. A line will be drawn at the prototyping stage in order to avoid any technical skill requirement. Further workshops will help to spur ideas by introducing different areas of the Software Development Kits (<abbr title="Software Development Kits">SDKs</abbr>); 3rd party <abbr title="Application Programming Interface">API&#8217;s</abbr>; and popular software libraries.</p>
<p>As a prize The Distance are offering to prototype the winners idea by developing an iOS or Android application. The University will also all the winners to attend their new iPhone App development course.</p>
<p>The course begins on the 16th November 2011 and runs until the start of the new year.</p>
<p>For more information please visit <a href="http://www.theappchallenge.co.uk">The App Challenge&#8217;s Facebook page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://thedistance.co.uk/journal/2011-10/introducing-the-app-challenge-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Media Images not available in Magento’s product list?</title>
		<link>http://thedistance.co.uk/journal/2011-10/missing-magento-media-images</link>
		<comments>http://thedistance.co.uk/journal/2011-10/missing-magento-media-images#comments</comments>
		<pubDate>Thu, 06 Oct 2011 02:20:16 +0000</pubDate>
		<dc:creator>Dajve Green</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[ecommerce]]></category>
		<category><![CDATA[Magento 1.6]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://thedistance.co.uk/?p=2255</guid>
		<description><![CDATA[While developing a Magento store, we came across one of those head-scratching moments where everything looks right yet still refuses to play nicely. This time around, we had added a media image attribute for an alternative view of the product. This was to appear in the category product list when a visitor hovered over an item. However, after adding the attribute (code: alt_image), reindexing the catalogue (Product Flat Data) and uploading a file, calls to $_product->getAlt_image()  in catalog/product/list.phtml simply returned NULL, despite coming through fine in catalog/product/view.phtml.

This is the story of how we fought Magento's UI and recovered our missing images.]]></description>
			<content:encoded><![CDATA[<h3>How to circumvent another of Magento’s usability quirks.</h3>
<p>While <a href="http://thedistance.co.uk/what-we-do/ecommerce/magento-platform/">developing a Magento store</a>, we came across one of those head-scratching moments where everything looks right yet still refuses to play nicely. This time around, we had added a media image attribute to allow the client to upload an alternative view of the product. This was to appear in the category product list when a visitor hovered over the item. </p>
<p>However, after adding the attribute (code: <code>alt_image</code>), reindexing the catalogue (<em>Product Flat Data</em>) and uploading a file, calls to <code>$_product-&gt;getAlt_image();</code> in <kbd>catalog/product/list.phtml</kbd> simply returned <code>NULL</code>, despite coming through fine in <kbd>catalog/product/view.phtml</kbd>.</p>
<h3>The Problem</h3>
<p>Simply? We’d missed out setting the “<em>Used in Product Listing</em>” option to <strong>Yes</strong> when defining the attribute. </p>
<p><img src="http://thedistance.co.uk/wp-content/uploads/2011/10/magento-attribute-used-in-product-listing.jpg" alt="Select Yes for Used in Product Listing" title="magento-attribute-used-in-product-listing" class="boxed responsive size-full wp-image-2282" /></p>
<p>Unfortunately, Magento’s UI makes this both easy to miss and awkward to rectify.</p>
<p>“Easy to miss” considering “<em>Used in Product Listing</em>” is hidden 600px below “<em>Catalog Input Type</em>” (below the fold in a 1280&#215;1024 resolution). Also, the field auto-hides when the <strong>Media Image</strong> type option is selected, so if you don’t remember to start at the bottom of the page, you’re out of luck.</p>
<p>“Awkward to rectify” as once a Magento attribute is saved, the “<em>Catalog Input Type</em>” field is disabled for editing. This means that administrators can’t reveal and alter the field without outside intervention. Or you could delete the attribute, re-add it correctly and hope you don’t have too many products to update the media gallery values of!</em></p>
<h3>The Solution</h3>
<p>Thankfully, there are a couple of tools which allow you to update the “<em>Used in Product Listing</em>” option after the attribute has been saved; both of which should already be familiar to you.</p>
<h4><a href="http://chrispederick.com/work/web-developer/" rel="external">Web Developer Toolbar by Chris Pederick</a></h4>
<p>The <em>Web Developer Toolbar</em> &gt; <em>Forms</em> &gt; <em>Enable Form Fields</em> function will make all disabled inputs editable again.</p>
<p><img src="http://thedistance.co.uk/wp-content/uploads/2011/10/web-developer_vs_magento.jpg" alt="Web Developer Toolbar extension &gt; Forms menu &gt; Enable Fields option [screenshot]" title="web-developer_vs_magento" class="boxed responsive size-full wp-image-2273" /></p>
<h4><a href="http://getfirebug.com/" rel="external">Firebug</a></h4>
<p>A slightly more long-winded way is to inspect the disabled element in Firebug and delete the “<em>disabled</em>” attribute, which has the same effect.</p>
<p><img src="http://thedistance.co.uk/wp-content/uploads/2011/10/firebug_vs_magento.jpg" alt="Delete &quot;disabled&quot; attribute in Firebug context menu while inspecting the DOM [screenshot]" title="firebug_vs_magento" class="boxed responsive size-full wp-image-2275" /></p>
<p>Both of these tools are available on <a href="http://getfirefox.com" rel="external">Firefox</a> and <a href="http://www.google.com/chrome" rel="external">Chrome</a> (if you’re working in web and don’t use either of these at some point in your work-flow, something’s gone very wrong!).</p>
<p>Once the field is enabled, selecting any value but <strong>Fixed Product Tax</strong> will reveal the Frontend Properties again, allowing you to update the attributes&#8217; settings.</p>
<p>Once you’re happy, simply save the attribute and re-index your Product Flat Data – you don’t have to worry about changing back to <strong>Media Image</strong>: Magento will ignore this value when updating the database.</p>
<p>Hopefully this is of help to others stuck in this situation, at least until this is resolved in a future release. </p>
<p>And for anybody wanting to follow this issue’s progress, <a title="View the bug report on magentocommerce.com" href="http://www.magentocommerce.com/bug-tracking/issue?issue=12394" rel="external">its number is 26586</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://thedistance.co.uk/journal/2011-10/missing-magento-media-images/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google trusted stores</title>
		<link>http://thedistance.co.uk/journal/2011-10/google-trusted-stores</link>
		<comments>http://thedistance.co.uk/journal/2011-10/google-trusted-stores#comments</comments>
		<pubDate>Mon, 03 Oct 2011 16:08:34 +0000</pubDate>
		<dc:creator>Ryan Atkins</dc:creator>
				<category><![CDATA[Digital Marketing]]></category>
		<category><![CDATA[eCommerce]]></category>
		<category><![CDATA[ecommerce]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[marketing]]></category>

		<guid isPermaLink="false">http://thedistance.co.uk/?p=2240</guid>
		<description><![CDATA[Google have just introduced a new service for customers selling online, introducing, Google Trusted Stores. This will essentially be a badge on ecommerce websites that will assure customers that they have a great track record. It also works in a PayPal&#8217;esque way in the sense that if you have a problem with your purchase, Google [...]]]></description>
			<content:encoded><![CDATA[<div class='fright' style='max-width:50%'><img src="http://thedistance.co.uk/wp-content/uploads/2011/10/trustedstores.png" alt="" title="" class="alignright size-full wp-image-2248" /></div>
<p>Google have just introduced a new service for customers selling online, introducing, <a href="http://www.google.com/trustedstores/" rel="external">Google Trusted Stores</a>.</p>
<p>This will essentially be a badge on ecommerce websites that will assure customers that they have a great track record. It also works in a PayPal&#8217;esque way in the sense that if you have a problem with your purchase, Google will work with the customer and the store to come to a resolution. <span id="more-2240"></span></p>
<p>Check out Google&#8217;s video for the launch&#8230;.</p>
<p><iframe width="500" height="284" src="http://www.youtube.com/embed/FKXPeIeKYd8" frameborder="0" allowfullscreen></iframe></p>
<p>Google has given us a sneak peak of the button as well&#8230;<br />
<img class="alignright size-full wp-image-2241" title="" src="http://thedistance.co.uk/wp-content/uploads/2011/10/trustedstoresbadge.png" /></p>
<p>I think this is a great move for Google and with more people than ever shopping online a trust mark from such a recognised brand would work wonders for the conversions on the stores sporting them.</p>
<p>I look forward to seeing how this service scales, I have high hopes!</p>
]]></content:encoded>
			<wfw:commentRss>http://thedistance.co.uk/journal/2011-10/google-trusted-stores/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magento Columnised Navigation v1.1.1</title>
		<link>http://thedistance.co.uk/journal/2011-10/magento-columnised-navigation-extension-v1-1-1</link>
		<comments>http://thedistance.co.uk/journal/2011-10/magento-columnised-navigation-extension-v1-1-1#comments</comments>
		<pubDate>Mon, 03 Oct 2011 14:11:35 +0000</pubDate>
		<dc:creator>Dajve Green</dc:creator>
				<category><![CDATA[Extensions]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Magento 1.5]]></category>
		<category><![CDATA[Magento 1.6]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://thedistance.co.uk/?p=2232</guid>
		<description><![CDATA[As a follow-up to our Magento column navigation extension post from last week, we&#8217;ve just pushed the latest version to GitHub. Featured Children Column The major news is that the extension now allows you to specify a featured children column through the Magento backend (Catalog &#62; Manage Categories). The featured children list sits as the [...]]]></description>
			<content:encoded><![CDATA[<p>As a follow-up to our <a title="Free Magento Extension : Columnised Navigation" href="http://thedistance.co.uk/journal/2011-09/free-magento-extension-columnised-navigation">Magento column navigation extension</a> post from last week, we&#8217;ve just pushed the latest version to GitHub.<br />
<span id="more-2232"></span></p>
<h3>Featured Children Column</h3>
<p>The major news is that the extension now allows you to specify a featured children column through the Magento backend (<em>Catalog &gt; Manage Categories</em>).</p>
<p>The featured children list sits as the first column in the set (where applicable) and contributes to the <kbd>maxCols</kbd> setting (therefore doesn&#8217;t appear if <kbd>maxCols</kbd> is set to <kbd>1</kbd>). Specifying a title will output a <code>&lt;h3&gt;</code> tag before the <code>&lt;ul&gt;</code>.</p>
<p>Setting <kbd>Show in Featured Children</kbd> to <strong>Yes</strong> will include this category in its parent featured column if it exists. Categories can be shown in the featured categories even if <kbd>Include in Navigation Menu</kbd> is set to <strong>No</strong>, allowing you to remove a category from the main navigation while retaining it as featured.</p>
<h3>Magento 1.6 Support</h3>
<p>The other major news is that the extension has now been tested in Magento 1.6 (v1.1.0&#8242;s attribute names were invalid for 1.6).</p>
<h3>Download The Extension</h3>
<p><a href="https://github.com/thedistance/Magento-Columnised-Navigation/archives/master" rel="external">Magento Columnnised Navigation package archives</a></p>
<h3>Tested In</h3>
<p>Magento 1.5, Magento 1.6</p>
]]></content:encoded>
			<wfw:commentRss>http://thedistance.co.uk/journal/2011-10/magento-columnised-navigation-extension-v1-1-1/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>A brief introduction to libdispatch, and why you should be using it</title>
		<link>http://thedistance.co.uk/journal/2011-09/a-brief-introduction-to-libdispatch-and-why-you-should-be-using-it</link>
		<comments>http://thedistance.co.uk/journal/2011-09/a-brief-introduction-to-libdispatch-and-why-you-should-be-using-it#comments</comments>
		<pubDate>Fri, 30 Sep 2011 17:23:45 +0000</pubDate>
		<dc:creator>Elliot Neal</dc:creator>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[Mobile Applications]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[blocks]]></category>
		<category><![CDATA[GCD]]></category>
		<category><![CDATA[libdispatch]]></category>
		<category><![CDATA[NSOperation]]></category>

		<guid isPermaLink="false">http://thedistance.co.uk/?p=2183</guid>
		<description><![CDATA[GCD (libdispatch) is a technology that Apple introduced with OS X Snow Leopard and iOS 4.0; we&#8217;ve had access to it on iOS for over a year now (and Mac OS X for 2 years!). Most of the marketing we all heard about was better thread efficiency, better use of multiple cores and blah blah [...]]]></description>
			<content:encoded><![CDATA[<p>GCD (libdispatch) is a technology that Apple introduced with OS X Snow Leopard and iOS 4.0; we&#8217;ve had access to it on iOS for over a year now (and Mac OS X for 2 years!). Most of the marketing we all heard about was better thread efficiency, better use of multiple cores and blah blah blah who cares? Yes, these things are great, and they will make a difference to how well your code runs. But if I&#8217;m honest, the part of GCD that really makes a difference to me, is just how much easier it makes my life as a programmer. I constantly find myself finishing up some threaded programming with libdispatch, and thinking: <em>concurrency just shouldn&#8217;t be this easy.</em></p>
<p>The aim of this post is to demonstrate this fact to you, teach you how to use libdispatch, and possibly garner addresses for threatening letters should you not start using it immediately.</p>
<p><span id="more-2183"></span></p>
<p>First, let&#8217;s look at a simple concurrent example using the previous best solution: NSOperation.</p>
<pre class="brush: cpp; title: ; notranslate">- (void)startSomeBackgroundMethod {

    id someArgumentOne = [self something];
    id someArgumentTwo = [self somethingElse];
    NSArray *arguments = [NSArray arrayWithObjects:someArgumentOne, someArgumentTwo, nil];

    NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(someBackgroundMethod:) object:arguments];
    NSOperationQueue *operationQueue = [self operationQueue];
    [operationQueue addOperation:operation];
    [operation release];
}

- (NSOperationQueue *)operationQueue {

    if (_operationQueue != nil)
        return _operationQueue;

    _operationQueue = [[NSOperationQueue alloc] init];

    return _operationQueue;
}

- (void)someBackgroundMethod:(NSArray *)arguments {

    id argumentOne = [arguments objectAtIndex:0];
    id argumentTwo = [arguments objectAtIndex:1];

    //
    // do some stuff
    //

    id result = ...;

    [self performSelectorOnMainThread:@selector(finishedBackgroundMethod:) withObject:result waitUntilDone:NO];
}

- (void)finishedBackgroundMethod:(id)result {

    //
    // do something with the result on the main thread
    //
}
</pre>
<p></p>
<p>So let&#8217;s review this code. We have some operation that needs to be done in the background, that operation takes 2 arguments. Once the operation completes, it informs the main thread that it&#8217;s finished. We also have a shared operation queue, which is loaded lazily.</p>
<p>Now, we&#8217;ll do the same thing using GCD. Check this:</p>
<pre class="brush: cpp; title: ; notranslate">- (void)startSomeBackgroundMethod {

    id someArgumentOne = [self something];
    id someArgumentTwo = [self somethingElse];

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        //
        // do some stuff
        //

        id result = ...;

        dispatch_async(dispatch_get_main_queue(), ^{

            //
            // do something with the result on the main thread
            //
        });
    });
}
</pre>
<p></p>
<p>How much cleaner is that?</p>
<ul>
<li>We don&#8217;t have to have 3 methods to do one job (4 if you count the queue).</li>
<li>We don&#8217;t have to wrap/unwrap the arguments in/from an array.</li>
<li>We don&#8217;t have to explicitly pass the arguments into the background thread.</li>
<li>We don&#8217;t have to manage an operation queue.</li>
<li>We don&#8217;t have to use selectors.</li>
<li>We have to write less code!</li>
</ul>
<p>All this for free. Well, pretty much free; the only learning curve that came with GCD is blocks.</p>
<p>Blocks are a great tool, and it would be beneficial for any Objective-C programmer to learn how to use them properly. Many of the APIs you know and love in the iOS SDK have block based alternatives, that read better inline and simplify your development cycle. I often use them as an alternative for writing a new function, like mini-functions. However, blocks are out of the scope of this post. All you need to know about blocks in order to use libdispatch, is that any code you want executed using GCD needs to be preceded by a caret (^) and contained within curly braces. Just like in the example above.</p>
<p>There are 3 calls that you need to know how to use in libdispatch:</p>
<pre class="brush: cpp; title: ; notranslate">dispatch_get_global_queue(dispatch_queue_priority_t priority, unsigned long flags);

#define dispatch_get_main_queue() (&amp;amp;_dispatch_main_q)

dispatch_async(dispatch_queue_t queue, dispatch_block_t block);
</pre>
<p></p>
<p><strong>dispatch_get_global_queue(dispatch_queue_priority_t priority, unsigned long flags)</strong> returns an operation queue from GCD. The first argument is a priority argument, but you will mostly be using <strong>DISPATCH_QUEUE_PRIORITY_DEFAULT</strong>, and the second argument is reserved for future use, so should always be 0.</p>
<p><strong>dispatch_get_main_queue()</strong> is a convenience macro for returning the operation queue for the main thread. This is the queue that you will use when you want to jump back onto the main thread from a background thread.</p>
<p><strong>dispatch_async(dispatch_queue_t queue, dispatch_block_t block)</strong> is the business end of libdispatch. Simply pass it a queue and a block of code to execute, and it will handle the rest.</p>
<p>That&#8217;s it, that&#8217;s all you need to know to get started. Personally, I think one of the best features of using GCD and blocks is the simplicity of passing arguments into the background. Back in the days of NSOperation I used to spend hours trying to use NSArray to wrap arguments that may or may not be nil (hint: [NSNull null]), which resulted in long if statements and generally messy code. With GCD, you can just use any variables in the current scope, and the runtime will manage moving them into the background and making sure they aren&#8217;t released prematurely. It&#8217;s like Christmas.</p>
<p>As the titles dictates, this is merely an introduction into using libdispatch. There are caveats to watch out for regarding block retain cycles and other nasty stuff, but these are usually special cases. The main thing you need to consider is that any work you&#8217;re doing inside that block is in the background, which means no UIKit code, NSManagedObjectContext considerations and such like.</p>
<p>Now go forth and, erm, stop using NSOperation.</p>
]]></content:encoded>
			<wfw:commentRss>http://thedistance.co.uk/journal/2011-09/a-brief-introduction-to-libdispatch-and-why-you-should-be-using-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

