<?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>Digital Marketing Blog by Soak Digital &#187; Technical</title>
	<atom:link href="http://www.soak.co.uk/blog/category/technical/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.soak.co.uk/blog</link>
	<description>a digital marketing agency</description>
	<lastBuildDate>Wed, 23 Nov 2011 15:51:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
		<item>
		<title>Achieving consistent mobile rendering</title>
		<link>http://www.soak.co.uk/blog/achieving-consistent-mobile-rendering/</link>
		<comments>http://www.soak.co.uk/blog/achieving-consistent-mobile-rendering/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 11:43:23 +0000</pubDate>
		<dc:creator>adam.collison</dc:creator>
				<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://www.soak.co.uk/blog/?p=1643</guid>
		<description><![CDATA[As a developer from time to time you come up against issues that have not been documented and can take hours to find a fix for. Unfortunately we recently encountered such a scenario and felt it appropriate to document the solution to help other developers in the future. HTC Wildfire Broken As the mobile development [...]]]></description>
			<content:encoded><![CDATA[<p>As a developer from time to time you come up against issues that have not been documented and can take hours to find a fix for. Unfortunately we recently encountered such a scenario and felt it appropriate to document the solution to help other developers in the future.</p>
<p><span id="more-1643"></span></p>
<p style="float:right; margin-left: 20px; padding-bottom: 10px;"><img src="http://www.soak.co.uk/blog/wp-content/uploads/2011/11/HTC_Wildfire_Nov_22_2011_10_29_10_r1_c1.png" alt="HTC Wildfire Render (broken)" title="HTC Wildfire Render (broken)" width="240" height="320" /><br /><strong>HTC Wildfire Broken</strong></p>
<p style="clear:none;">As the mobile development landscape is so diverse there are a number of issues that still arise thanks to every mobile platform moving in their own direction with no solid standards being adhered to. Some mobiles have different browsers and different versions of browsers. Take the HTC Wildfire, which runs a custom webkit based browser. From a developers viewpoint this can cause a host of issues.</p>
<p style="clear:none;">The problem we encountered was with a mobile specific website that uses the Meta Viewport tag, which isn&#8217;t implemented correctly across all devices:</p>
<p><strong>Our Viewport Tag:</strong></p>
<p><code style="font-size: 0.92em; font-family: Verdana, Geneva, sans-serif;">&lt;meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0"&gt;</code></p>
<p>This works fine on the iPhone and most smartphones, but the HTC Wildfire rendered everything with increased zoom.</p>
<p><!--<br />
@media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {<br />
html<br />
{<br />
    zoom:1.5;<br />
    font-size:1.3em;<br />
}<br />
}<br />
--></p>
<h1>Fix the viewport on HTC Wildfire</h1>
<p>This was a little more tricky as the device DPI is so low and there isn&#8217;t a great deal of documentation on-line about rendering websites in the HTC Wildfire. After a few hours of playing we came up with this:</p>
<p><code style="font-size: 0.92em; font-family: Verdana, Geneva, sans-serif;">@media screen and (-webkit-device-pixel-ratio: 0.75) {<br />
    /* CSS for low-density screens */<br />
   body { zoom:0.82; }<br />
}</code></p>
<p>This fix appears to re-adjust the zoom to cater for the low density pixel ratio. It&#8217;s a good thing that media queries in CSS have been introduced or this would be impossible to fix.</p>
</h1>
<p>The Finished Code:</h1>
<p style="margin-bottom:20px;"><code style="font-size: 0.92em; font-family: Verdana, Geneva, sans-serif;">&lt;meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0"&gt;<br />
&lt;style type="text/css"&gt;<br />
@media screen and (-webkit-device-pixel-ratio: 0.75) {<br />
    /* CSS for low-density screens */<br />
   body { zoom:0.82; }<br />
}<br />
&lt;/style&gt;</code></p>
<p style="float:left; margin-right: 20px;"><img src="http://www.soak.co.uk/blog/wp-content/uploads/2011/11/HTC_Wildfire_Nov_22_2011_10_32_39_r1_c1.png" alt="HTC Wildfire Viewport Fixed" title="HTC Wildfire Viewport Fixed" width="240" height="320" class="alignnone size-full wp-image-1656" /><br /><strong>HTC Wildfire Viewport Fixed</strong></p>
<p style="clear:none;">As you can see form the screen-shot to the left this worked a treat, you may want to tweak the zoom and font size in the CSS media queries to fit your design perfectly.</p>
<p style="clear:none;">On the first screen shot you can see the text being cut off the right hand side of the browser, the images being cropped off the screen and the bottom navigation missing an item. Once the zoom is fixed it renders as expected.</p>
<p style="clear:none;">If you&#8217;re a developer then hopefully we have just saved you some time and more importantly frustration!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soak.co.uk/blog/achieving-consistent-mobile-rendering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The curse of consistency</title>
		<link>http://www.soak.co.uk/blog/the-curse-of-consistency/</link>
		<comments>http://www.soak.co.uk/blog/the-curse-of-consistency/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 10:04:04 +0000</pubDate>
		<dc:creator>adam.collison</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://www.soak.co.uk/blog/?p=1194</guid>
		<description><![CDATA[Consistency can be vital to a project&#8217;s success, certainly when we refer to accessibility and usability, but sometimes consistency can be a hidden curse. The purpose of this post is to inform the non-developer types out there when consistency should be disregarded. I&#8217;m sure some people will already disagree, insisting that consistency is important irrespective [...]]]></description>
			<content:encoded><![CDATA[<p>Consistency can be vital to a project&#8217;s success, certainly when we refer to accessibility and usability, but sometimes consistency can be a hidden curse. The purpose of this post is to inform the non-developer types out there when consistency should be disregarded.</p>
<p><span id="more-1194"></span></p>
<p>I&#8217;m sure some people will already disagree, insisting that consistency is important irrespective of the scenario. We were recently involved with some development on a mobile optimised web-application that would need to allow end users to interact through smart phones. During the first round of testing we were happy with the outcome and sent the client a beta release.</p>
<p>The client then came back with an 8 or 9 page document of amends&#8230;these amends were regarding consistency of device rendering, which proved to be a bit of an issue, not only because there is very little beside browser sniffing to target the devices raised, but because changing the visual appearance to be consistent would be wrong.</p>
<p><strong>Why?</strong><br />
The problem arised because the testing involved putting 5 devices next to each other and going through the site step by step and listing all of the inconsistencies. Our first question to the client was how often will an end user do this? Obviously the answer was never.</p>
<p>If the interactions and aesthetic look nice in isolation, it&#8217;s relativity irrelevant what it looks like in other browsers or devices. I appreciate this can be a hard debate to win but carry on reading and hopefully it will make more sense.</p>
<p>Users owning a device or using a specific browser are used to how it works, they know how a select box should look and how a check-box interacts. The problem comes when you start interfering with these native display mechanisms as users soon get confused and frustrated. The devices they have purchased and become familiar with allow them to easily browse the web and interact with sites. As soon as you move the goal posts of how to interact with a site, their experience quickly becomes less enjoyable.</p>
<p><img src="http://www.soak.co.uk/blog/wp-content/uploads/2011/08/iphones.jpg" alt="IPhones" title="IPhones" width="455" height="182" class="aligncenter size-full wp-image-1229" /></p>
<p><strong>Appleitis</strong><br />
On a few occasions we have come across sites where developers are trying to make everything look like an iPhone. My immediate response is if users wanted their web experience to be like that of an iPhone they probably would have purchased one. By forcing a display type on your users, you are almost insulting their concious choice of device / browser. Developers and designers should embrace the rendering of each device and respect their decision of device choice.</p>
<p><strong>When to enforce consistency</strong><br />
Although browsers and devices will do their own thing, there are some consistencies that need to be enforced. The main one being the users interaction throughout the site end to end. As with any web based application, it&#8217;s key for a user journey to remain consistent. Therefore if we discover a browser bug on a certain page that affects the navigation placement we will fix it, its not acceptable to use the rendering differences as an excuse for the key calls to action and user journey to be compromised.</p>
<p><strong>In summary</strong><br />
Try and look at the project you are working on in isolation, think about what your end user will be doing. If your end user is unlikely to view the site simultaneously on three different devices/browsers then it&#8217;s not a show stopper that they are not all 100% identical. Work towards a site that offers the end user a smooth and memorable experience hopefully resulting in them returning and telling people.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soak.co.uk/blog/the-curse-of-consistency/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The future of mobile websites</title>
		<link>http://www.soak.co.uk/blog/the-future-of-mobile-websites/</link>
		<comments>http://www.soak.co.uk/blog/the-future-of-mobile-websites/#comments</comments>
		<pubDate>Wed, 10 Aug 2011 14:32:11 +0000</pubDate>
		<dc:creator>adam.collison</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://www.soak.co.uk/blog/?p=1220</guid>
		<description><![CDATA[As we continue to invest time into research and development, it&#8217;s becoming more apparent that the digital mobile landscape is evolving. More and more people are using mobile devices to browse the web and access information on the go. It seems like only yesterday i wrote an article on &#8220;The increasing need for mobile compatible [...]]]></description>
			<content:encoded><![CDATA[<p>As we continue to invest time into research and development, it&#8217;s becoming more apparent that the digital mobile landscape is evolving. More and more people are using mobile devices to browse the web and access information on the go. It seems like only yesterday i wrote an article on &#8220;<a href="/blog/the-increasing-need-for-mobile-compatible-sites/">The increasing need for mobile compatible sites</a>&#8221; but since then a lot has changed meaning perhaps a new approach is emerging.</p>
<p><span id="more-1220"></span></p>
<p>At the time my original post was written smart phones were starting to take a lead in the mobile market but as time goes on it wont be long before all mobile devices are smart phones with advanced browsers and rendering capabilities. This coupled with the evolution of CSS3 and HTML5 support means that devices are now more capable of displaying a standard website thus rending the mobile site almost useless.</p>
<p>As much as I hate to backtrack from a previous post, moving forwards I think designers and developers need to consider scalability within their sites, allowing for different resolutions right down to 320px by 480px. We are starting to see more cutting edge developers take this approach and I must admit it&#8217;s my preferred option when viewing sites on my iPhone.</p>
<p><strong>A Compelling Argument:</strong></p>
<ul>
<li>A recent research done by the IAB suggested that 61% consumers won&#8217;t revisit poor mobile sites</li>
<li>The number of UK consumers who accessed a retail site using their mobile in the three months ending May 2011 increased by 163 per cent compared to the same period last year</li>
<li>Around 27 per cent of adults and 47 per cent of teenagers in the UK now own a smartphone</li>
<li>At least 37 per cent of adults and 60 per cent of teenagers claim to be &#8216;highly addicted&#8217; to their smartphones, with 81 per cent of smartphone users leaving their phones on at all times.</li>
</ul>
<p>Source: <a href="http://www.iabuk.net" target="_blank">http://www.iabuk.net</a></p>
<p>It&#8217;s clear that the market place for mobile compatible sites is growing faster than predicted but the best way forwards to attract this new marketplace is something that needs more deliberation, simply creating a cut down site with limited functionality and a maximum screen width of 480px is not really going to allow you to stand out from the crowd.</p>
<p><strong>A possible solution</strong><br />
The answer is &#8220;Responsive Design&#8221;, as mentioned earlier this technique uses CSS3, HTML5 and a bit of clever planning to design a site where the areas of key content can be easily rearranged to make the best use of the screen real estate regardless of the screen site, the design responds to the conditions and parameters it&#8217;s given.</p>
<p><img src="http://www.soak.co.uk/blog/wp-content/uploads/2011/08/screens_small.jpg" alt="" title="Screens" width="455" height="118" class="aligncenter size-full wp-image-1235" /></p>
<p>Check out this example (resize your browser):<br />
<a href="http://www.alistapart.com/d/responsive-web-design/ex/ex-site-larger.html" target="_blank">http://www.alistapart.com/d/responsive-web-design/ex/ex-site-larger.html</a></p>
<p>I won&#8217;t go into the technical detail about this specific technique as there are many sites offering this information. This blog post is intended to provoke thought in the way we approach tackling the smartphone user base and the methods we employ to offer a cutting edge and sophisticated browsing experience.</p>
<p>Hopefully more sites will take this approach moving forwards, I know the team here are already investigating this approach and will be putting our skills to good use over the next few months!</p>
<p><strong>Some Nice Examples:</strong><br />
<a href="http://clearairchallenge.com/" target="_blank">http://clearairchallenge.com/</a><br />
<a href="http://naomiatkinson.com/" target="_blank">http://naomiatkinson.com/</a><br />
<a href="http://3200tigres.wwf.fr/" target="_blank">http://3200tigres.wwf.fr/</a><br />
<a href="http://www.dynamit.us/" target="_blank">http://www.dynamit.us/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.soak.co.uk/blog/the-future-of-mobile-websites/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Resources for building HTML emails</title>
		<link>http://www.soak.co.uk/blog/resources-for-building-html-emails/</link>
		<comments>http://www.soak.co.uk/blog/resources-for-building-html-emails/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 10:30:04 +0000</pubDate>
		<dc:creator>ronan.sprake</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.soak.co.uk/blog/?p=1168</guid>
		<description><![CDATA[HTML emails add a professional look to website correspondence and help to continue the brand experience during communications with your clients. If only they weren&#8217;t such a pain to build! A wild west of tables, spacer GIFs and font tags I used to have nightmares about HTML emails. You had to get into the IE5, [...]]]></description>
			<content:encoded><![CDATA[<p>HTML emails add a professional look to website correspondence and help to continue the brand experience during communications with your clients. If only they weren&#8217;t such a pain to build!<span id="more-1168"></span></p>
<h3>A wild west of tables, spacer GIFs and font tags</h3>
<p>I used to have nightmares about HTML emails. You had to get into the IE5, y2k frame of mind, banish most semantic best practices and aims for elegant script. However, there are tools to make the task significantly easier.</p>
<p>The first stop has to be the <a title="Campaign Monitor Blog" href="http://www.campaignmonitor.com/blog/" target="_blank">Campaign Monitor Blog</a>, a superb resource for the latest news in all things email. A particularly useful resource is their <a title="Email client CSS support" href="http://www.campaignmonitor.com/css/" target="_blank">CSS support guide</a> which outlines what you can and (crucially) cannot expect popular email clients to support. The view is dismal, there&#8217;s not even support for CSS background images in Outlook 2007 and 2010.</p>
<h3>Building</h3>
<p>Get yourself a good template from which to build your email. Check out the <a title="HTML Email Boilerplate" href="http://htmlemailboilerplate.com/" target="_blank">HTML Email Boilerplate</a> for a nicely commented example. Don&#8217;t be afraid to nest tables. It&#8217;s often the only control you have over spacing and alignment.</p>
<p>Remember to build a separate text-based version of each email template, this can be a text file with URLs in the place of link text and some basic text spacing. Also remember to clearly mark content place-holders, for example, instead of putting in a dummy name, I prefer to use %%FIRST-NAME%% which is easier to spot in tests. Sending emails containing dummy content is hugely embarrassing!</p>
<h3>Testing</h3>
<p>You can&#8217;t rely on regular browser testing; even online email clients behave in different ways in each browser. The best start is to <a title="Validator" href="http://validator.w3.org/" target="_blank">validate your HTML</a> to iron out any incorrect table nesting, missing tags and absent alt attributes. This can avoid silly mistakes from turning into hour-long head-scratchers. The next tip isn&#8217;t free, but is completely worthwhile; unless you have the full suite of email clients available (Outlook 2003, 2007, 2010, Apple Mail, Android Gmail, etc) I&#8217;d stump up a month&#8217;s subscription to <a title="Litmus Email Testing" href="http://litmus.com/" target="_blank">Litmus</a>.</p>
<h3>Sending</h3>
<p>OK, you&#8217;ve built and tested a glorious email template that&#8217;s all ready to be sent. Unless you are really geared up for it, I&#8217;d recommend a third party service for sending your emails. <a title="Mailchimp" href="http://mailchimp.com/" target="_blank">Mailchimp</a> offers a reasonably priced package along with spam filter testing and best practice guides. Also remember that response can vary depending on your subject line and the time you send your email. No-one notices an email added to their unread stack on Monday morning or when they&#8217;re leaving the office on a Friday afternoon.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soak.co.uk/blog/resources-for-building-html-emails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Server-side Map Marker Clustering</title>
		<link>http://www.soak.co.uk/blog/server-side-map-marker-clustering/</link>
		<comments>http://www.soak.co.uk/blog/server-side-map-marker-clustering/#comments</comments>
		<pubDate>Fri, 24 Jun 2011 11:00:02 +0000</pubDate>
		<dc:creator>eugene.ingram</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[Clustering]]></category>
		<category><![CDATA[Geo Tagging]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[PHP Clusters]]></category>

		<guid isPermaLink="false">http://www.soak.co.uk/blog/?p=1185</guid>
		<description><![CDATA[How do you provide clustered markers in Google Maps for dynamic site content when you have 120,000 items and counting in your database? This was a problem we were recently presented with for a geo-tagging solution that would allow articles and user provided content such as photographs to be geo-tagged and shown in Google Maps [...]]]></description>
			<content:encoded><![CDATA[<p>How do you provide clustered markers in Google Maps for dynamic site content when you have 120,000 items and counting in your database? This was a problem we were recently presented with for a geo-tagging solution that would allow articles and user provided content such as photographs to be geo-tagged and shown in Google Maps in a visually appealing way.</p>
<p><span id="more-1185"></span></p>
<p><img src="http://www.soak.co.uk/blog/wp-content/uploads/2011/06/map.jpg" alt="Example clustering" title="Example clustering" width="450" height="349" class="aligncenter size-full wp-image-1189" /></p>
<p>It was of course out of the question to deliver all the markers at a given zoom level and map position to Google Maps and expect client-side clustering to be undertaken so we needed a way of clustering on the server-side to ensure excellent performance.</p>
<p>After giving the problem some thought the approach taken was to notionally divide up the surface of the Earth into tiles at each zoom level of Google Maps. For our purposes we treated these tiles as squares (though this paradigm becomes less applicable as you approach the poles). It is then possible to give each tile at a given zoom level a unique numeric identifier. At the greatest zoom level of 21 we needed to notionally number these tiles from one to 247,390,116,249,600!</p>
<p>A central table in the database allows us to store the tile in which each item sits at each zoom level along with an average latitude and longitude for the items in a particular tile; this latter approach helps to stop the clustered markers appearing too regimented.</p>
<p>It is then simply an exercise in calculating the tile in which an item sits at each zoom level when it is added to the system. When items are added, edited or deleted from the system we take care to note that the tile in which they sit (and/or sat) needs its average latitude and longitude re-calculating.</p>
<p>With this structure in place we&#8217;re able to provide pre-clustered marker positions to Google Maps when given the zoom level and map position. The beauty of this is that we only need to concern ourselves with the tiles that will be present on the map when we query the database. If a tile contains more than one item we can show a marker at the stored average latitude and longitude along with an item count; if it contains a single item we can show a marker for that item at its own latitude and longitude. With some clever client-side code in place making AJAX calls to the server and dropping appropriate interactive markers into Google Maps we have our solution.</p>
<p>We&#8217;ve found this approach works really effectively and &#8211; despite the number-crunching that goes on behind the scenes maintaining the clusters &#8211; it provides a slick user experience.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soak.co.uk/blog/server-side-map-marker-clustering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Optimising content for different users</title>
		<link>http://www.soak.co.uk/blog/optimising-content-for-different-users/</link>
		<comments>http://www.soak.co.uk/blog/optimising-content-for-different-users/#comments</comments>
		<pubDate>Tue, 21 Jun 2011 09:16:36 +0000</pubDate>
		<dc:creator>ronan.sprake</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://www.soak.co.uk/blog/?p=1158</guid>
		<description><![CDATA[At Soak, site performance is a point of pride. Furthermore, as a client-side developer, this mostly comes down to the work I do. Apart from religiously following best-practice guidelines and adopting tools such as Firebug and Smush.it, what more can be done? I&#8217;d like to focus on one technique that often sets apart the high-performance [...]]]></description>
			<content:encoded><![CDATA[<p>At Soak, site performance is a point of pride. Furthermore, as a client-side developer, this mostly comes down to the work I do. Apart from religiously following <a title="YUI Performance Guidelines" href="http://developer.yahoo.com/performance/rules.html">best-practice guidelines</a> and adopting tools such as <a title="Get Firebug" href="http://getfirebug.com/">Firebug</a> and <a title="Yahoo Smush.it" href="http://www.smushit.com/ysmush.it/">Smush.it</a>, what more can be done?<br />
<span id="more-1158"></span></p>
<p>I&#8217;d like to focus on one technique that often sets apart the high-performance sites we know and love from the more amateur sites that seem to be forever loading content. In most cases, functionality can be split into two or more user groups. Anonymous users see a cut-down version of the website, maybe some static content with basic functionality such as searching and registration. Once logged-in, a user will be presented with more complex functionality and expanded interfaces.</p>
<p>The practice of combining background images (spriting) and packaging assets such as JavaScript and CSS into single files to minimise server requests has become commonplace. The down-side is when a user visits any page on your site &#8211; a search results page, login page, home page &#8211; they will download the assets to your entire site, including areas they will probably never visit. Off-the-shelf CMS packages are among the worst offenders.</p>
<p>To minimise this impact, you can split assets into groups based on access level and load them when necessary. Scripts used to build complex functionality can be split into chunks only included when a user logs in. This technique can be applied to CSS, JavaScript and all static files. An example of grouping graphical button sprites can be seen on ipatter.com:</p>
<p>Non-registered users visiting the homepage will <a href="http://ipatter.com/assets/images/bg-button-home.png" target="_blank">download this sprite</a> (20kb)</p>
<p>Non-registered users visiting a listing page will <a href="http://ipatter.com/assets/images/bg-button-main.png" target="_blank">download this larger sprite</a> (30kb)</p>
<p>Registered users will <a href="http://ipatter.com/assets/images/bg-button-profile.png" target="_blank">download this largest sprite</a> (60kb + the previous two)</p>
<p>This approach takes no more effort if adopted early-on and will help to ensure that different users will have an equally optimised experience.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soak.co.uk/blog/optimising-content-for-different-users/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS3 Scalable Background Images</title>
		<link>http://www.soak.co.uk/blog/css3-scalable-background-images/</link>
		<comments>http://www.soak.co.uk/blog/css3-scalable-background-images/#comments</comments>
		<pubDate>Tue, 12 Apr 2011 09:51:22 +0000</pubDate>
		<dc:creator>adam.collison</dc:creator>
				<category><![CDATA[Creative]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://www.soak.co.uk/blog/?p=1127</guid>
		<description><![CDATA[CSS3 Comes with a range of nifty new features allowing the modern I-Dev to push the boundaries of what is possible within website presentation. Although a lot of the CSS2/3 features may have been around a while it&#8217;s only recently that support has been good enough to warrant using some of the many new features. [...]]]></description>
			<content:encoded><![CDATA[<p>CSS3 Comes with a range of nifty new features allowing the modern I-Dev to push the boundaries of what is possible within website presentation. Although a lot of the CSS2/3 features may have been around a while it&#8217;s only recently that support has been good enough to warrant using some of the many new features.</p>
<p>One of my favourite tricks is the scalable background image, I&#8217;m sure you have already started to see this on a few sites and in time I think more and more people with look at adopting this approach. The below example is based on pure CSS, there are ways to include JavaScript to support older browsers but personally I think the idea of progressive enhancement is that a website should render better for users with capable browsers therefore encouraging users with older browsers to upgrade.</p>
<p><a href="http://www.soak.co.uk/blog/examples/1/scalabale-background-images.html" target="_blank">See Example »</a></p>
<p><span id="more-1127"></span></p>
<p><strong>What is a scalable background image?</strong></p>
<p>We are looking to have an image set as the background and fill up the browser window irrespective of the window size. Although this may seem quite simple it&#8217;s important that we maintain the images original aspect ratio even when the browser window is resized by the user. Another thing we want to avoid is the window being too small for the image to render adequately.</p>
<p>All of this is done with a few select lines of CSS3 using the &#8220;background-size: cover;&#8221; declaration and some conditional statements relating to the screen resolution.</p>
<p>*Please note this technique only works with newer browsers, although some older browsers were ahead of the time and may support this, you will need to carefully review which browsers you intend to support.</p>
<p><strong>The CSS:</strong></p>
<p><code style="font-size: 0.92em; font-family: Verdana, Geneva, sans-serif;"><br />
body {<br />
background: #fff url(/assets/images/bg-scalable.jpg) 0 0 fixed no-repeat;<br />
margin:0;<br />
padding: 0;<br />
background-size: cover;<br />
-moz-background-size: cover;<br />
-webkit-background-size: cover;<br />
}<br />
<strong>@media only all and (max-width: 640px) and (max-height: 480px) {</strong><br />
body {<br />
background-size: 640px 480px;<br />
-moz-background-size: 640px 480px;<br />
-webkit-background-size: 640px 480px;<br />
}<br />
<strong>}</strong><br />
<strong>@media only screen and (orientation: portrait) and (device-width: 320px), (device-width: 768px) {</strong><br />
body {<br />
-webkit-background-size: auto 100%;<br />
}<br />
<strong>}<br />
@media only screen and (orientation: landscape) and (device-width: 320px), (device-width: 768px) {</strong><br />
body {<br />
-webkit-background-size: 100% auto;<br />
}<br />
<strong>}</strong><br />
</code></p>
<p><strong>Whats Going on?</strong></p>
<p>Ok lets step through this section by section, the first decoration sets the body background image of &#8220;bg-scalable.jpg&#8221;. This is what all of the older browsers see, this in my opinion is a good enough fall-back for less able browsers. Once the background is set we then use the new &#8220;<a href="http://www.w3.org/TR/css3-background/#the-background-size" target="_blank">background-size</a>&#8221; statement with the value of &#8220;cover&#8221;.</p>
<p>According to the CSS3 Specification the background-size specifies the size of the background images. When using the cover attribute the browser should &#8220;Scale the image, while preserving its intrinsic aspect ratio (if any), to the smallest size such that both its width and height can completely cover the background positioning area.&#8221; see : <a href="http://www.w3.org/TR/css3-background/#the-background-size" target="_blank">http://www.w3.org/TR/css3-background/#the-background-size</a></p>
<p>In theory we could end there as this will deal with the scaling of the background, as mentioned before we want to put in some limitations to prevent the background being condensed to much. This is where the conditional statements come in e.g. <em>@media only all and (max-width: 640px) and (max-height: 480px) {</em>.</p>
<p><strong>@media only all and (max-width: 640px) and (max-height: 480px) </strong><br />
Here we are stating that the window should not get any smaller than 640px by 480px. If the browser window matches this or is smaller then apply the styles within, in this case the styles within are over-writing the &#8220;background-size: cover&#8221; with a fixed size of 640 x 480. These sizes can be changed to whatever you want your minimum background size to be, <em>it&#8217;s worth making sure your conditional statement sizes and CSS background image size match</em>.</p>
<p><strong>@media only screen and (orientation: portrait) and (device-width: 320px), (device-width: 768px) {</strong> and <strong>@media only screen and (orientation: landscape) and (device-width: 320px), (device-width: 768px) {</strong><br />
These conditional statements are used for iOS devices as the native support of background-size cover does not exist, In this case we use the orientation and have separate CSS statements to stretch the image ensuring it fills the screen.</p>
<p><strong>And we&#8217;re done</strong><br />
That&#8217;s about it, in its purest form you could just include the background-size: cover; attribute in your body and let the able browsers deal with it, personally I prefer a more rounded approach.</p>
<p>Feel free to Send us examples of this in use for us to reference!<br />
<a href="http://www.soak.co.uk/blog/examples/1/css-scalable.zip">Download the Example Zip to get you started</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.soak.co.uk/blog/css3-scalable-background-images/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS3 Thinking outside the box</title>
		<link>http://www.soak.co.uk/blog/css3-thinking-outside-the-box/</link>
		<comments>http://www.soak.co.uk/blog/css3-thinking-outside-the-box/#comments</comments>
		<pubDate>Wed, 06 Apr 2011 12:34:38 +0000</pubDate>
		<dc:creator>adam.collison</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Soak Related]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://www.soak.co.uk/blog/?p=1112</guid>
		<description><![CDATA[CSS3 Child Element Detection&#8230; Is it possible? I was recently asked by a fellow developer if there was a way to detect if a HTML object contains a certain element and alter the CSS styles depending on the element it contains. The Scenario: &#8220;You want to target all anchor elements containing a link to a [...]]]></description>
			<content:encoded><![CDATA[<p>CSS3 Child Element Detection&#8230; Is it possible?</p>
<p>I was recently asked by a fellow developer if there was a way to detect if a HTML object contains a certain element and alter the CSS styles depending on the element it contains.</p>
<blockquote><p><strong>The Scenario:</strong><br />
&#8220;You want to target all anchor elements containing a link to a pdf BUT if the link to the pdf contains an image you don&#8217;t want the same styling to apply:&#8221;</p></blockquote>
<p><span id="more-1112"></span>As CSS is cascading, it&#8217;s difficult to go back up the DOM tree; after some thought and playing around I discovered a workaround.</p>
<p>You would normally reference element like &#8220;A &gt; IMG&#8221; to target an element but would rarely have to do &#8220;A &gt; IMG &lt;&#8221; so a little thinking outside the box was required.</p>
<p>Here&#8217;s the code:</p>
<p><strong>HTML</strong><br />
&lt;p&gt;&lt;a href=&#8221;some.pdf&#8221;&gt;text link&lt;/a&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;a href=&#8221;some.pdf&#8221;&gt;&lt;img src=&#8221;img-link.png&#8221; width=&#8221;200&#8243; height=&#8221;20&#8243; /&gt;&lt;/a&gt;&lt;/p&gt;</p>
<p><strong>CSS</strong><br />
a[href$=".pdf"] {<br />
background: red;<br />
border:20px solid green;<br />
}</p>
<p>a[href$=".pdf"]:first-child:not([src]) {<br />
background: blue;<br />
border:20px solid orange;<br />
}</p>
<p><strong>Explanation</strong><br />
OK so the first CSS statement tells the browser to apply the style to any link where the HREF attribute contains a .pdf. This means both links have this applied (including the one with the image)</p>
<p>As mentioned we want to target the links differently, so we now have a second style which applies only to links with NO image inside. Note that we are not targeting the link with an image but links with no image so the standard style is inherited for the image only. The CSS here is first detecting all links with a href attribute containing &#8220;.pdf&#8221; where the first child element in the anchor tag has NOT got an attribute of &#8220;src&#8221; (therefore not an image).</p>
<p><strong>Summary</strong><br />
Admitted its a bit complex but seems to work OK. Obviously IE 8- will struggle with this but it was required on an Admin area where the standard browser used is Firefox4. We will conduct some browser tests and look to include some known browser support moving forwards.</p>
<p>Feel free to follow me @cssguy <a href="http://twitter.com/cssguy">http://twitter.com/cssguy</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.soak.co.uk/blog/css3-thinking-outside-the-box/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The increasing need for mobile compatible sites</title>
		<link>http://www.soak.co.uk/blog/the-increasing-need-for-mobile-compatible-sites/</link>
		<comments>http://www.soak.co.uk/blog/the-increasing-need-for-mobile-compatible-sites/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 14:37:03 +0000</pubDate>
		<dc:creator>adam.collison</dc:creator>
				<category><![CDATA[Industry News]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[Trends]]></category>

		<guid isPermaLink="false">http://www.soak.co.uk/blog/?p=1055</guid>
		<description><![CDATA[As technology marches on there is always something new to keep developers busy; it only feels like a couple of years ago it was the use of Flash in websites. This quickly changed with a trend towards Facebook integration and iPhone apps, now with ever increasing sales of smartphones it seems like the current trend [...]]]></description>
			<content:encoded><![CDATA[<p>As technology marches on there is always something new to keep developers busy; it only feels like a couple of years ago it was the use of Flash in websites. This quickly changed with a trend towards Facebook integration and iPhone apps, now with ever increasing sales of smartphones it seems like the current trend is for mobile browsing. We always knew that mobile browsing would improve but I didn&#8217;t expect mobile browsers to evolve so quickly.<span id="more-1055"></span></p>
<p><a href="http://www.soak.co.uk/blog/wp-content/uploads/2011/01/soak-mob.jpg"><img src="http://www.soak.co.uk/blog/wp-content/uploads/2011/01/soak-mob.jpg" alt="Mobile Devices" title="Mobile Devices" width="408" height="381" class="aligncenter size-full wp-image-1065" /></a></p>
<p>Users are becoming used to the convenience of having their digital essentials on one device. Mobile phones have been capable of browsing the web for a few years now, but as more people browse on the go, a slick mobile site has become a must-have within digital marketing. A reported 61.6 million smart-phones were sold according to Q2 2010 figures and The Coda Research Consultancy predicts global smartphone sales of some 2.5 billion over the 2010-2015 period, suggesting that mobile internet use via smartphones will increase fifty-fold by the end of this period.</p>
<p>Previously as with all trends at the beginning it makes little difference if you follow the trend as some of them never seem to take off, such as Google Wave that didn&#8217;t really &#8220;change the web&#8221; as so many people predicted. But knowing which trends to implement can make a huge difference as a business.</p>
<p>Just like in the early 1990s when the internet was in its infancy the business who did not adopt the &#8220;website&#8221; trend soon started to struggle as their competitors began to dominate the digital market. Today, the internet is so widely adopted that if you don&#8217;t have an online presence for many businesses this means customers will not find you, especially if your target demographic is a younger audience.</p>
<p>Something similar could happen with mobile versions of sites. Let&#8217;s say you have a website and your digital marketing is superb meaning users can find you, if when they arrive at your site on a smart-phone and certain elements are not supported or it takes too long to load, users can soon get frustrated and leave, possibly finding a competitor who has taken the time to produce a mobile specific version of the site with these users in mind. Please bear in mind that <a href="http://www.slideshare.net/CMSummit/ms-internet-trends060710final" class="newwindow">Morgan Stanley Research</a> estimates sales of smartphones will exceed those of PCs in 2012.</p>
<p>Although phones like the Galaxy S and iPhone 4 have sophisticated browsers capable of rendering a full website in miniature as you would see it on a standard computer this does not mean you should not consider streamlining your approach for mobile devices, often the page weight of a standard website is pushing the limits of the smart-phone and may lead to slower than expected loading times, there are also a number of features that are not supported on smart-phones. For example Flash is not currently supported on the iPhone 4 meaning unless you have a good alternative your users will not get a rich brand experience.</p>
<p>Another feature that is unknowingly not supported on most mobile browsers is the ability to hover over an item. An example of this being problematic is a website where the navigation requires the user to hover their cursor over the item to see sub-navigation options. For this reason if you know your users are using hand held devices why not streamline your content and information to make it even easier for them to navigate increasing traffic conversion rates.</p>
<p>In summary, Mobile browsing is moving forwards at an extraordinary rate and it won&#8217;t be long before users expect to see mobile versions of their favourite website. It&#8217;s a trend that has been successful and will only grow. If you decide not to create mobile alternatives you need to be prepared for user frustration and the possibility that they may go elsewhere.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soak.co.uk/blog/the-increasing-need-for-mobile-compatible-sites/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Terms of use for Social Media logos</title>
		<link>http://www.soak.co.uk/blog/terms-of-use-for-social-media-logos/</link>
		<comments>http://www.soak.co.uk/blog/terms-of-use-for-social-media-logos/#comments</comments>
		<pubDate>Tue, 12 Oct 2010 13:33:07 +0000</pubDate>
		<dc:creator>alan.offord</dc:creator>
				<category><![CDATA[Creative]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[legal stuff]]></category>
		<category><![CDATA[Licensing]]></category>
		<category><![CDATA[Terms of use]]></category>

		<guid isPermaLink="false">http://www.soak.co.uk/blog/?p=974</guid>
		<description><![CDATA[Everyone these days is into social media. Gone are the days when clients would um and ah about whether or not it was just another trendy marketing buzz-word. Now we often get requests from clients, sometimes half-way through a project, asking where we can position their Twitter feed. In fact, the term &#8216;social media&#8217; may [...]]]></description>
			<content:encoded><![CDATA[<p>Everyone these days is into social media. Gone are the days when clients would um and ah about whether or not it was just another trendy marketing buzz-word. Now we often get requests from clients, sometimes half-way through a project, asking where we can position their Twitter feed. In fact, the term &#8216;social media&#8217; may be coming close to jumping the shark, with developers like <a href="http://ryanwaggoner.com/2010/09/im-done-building-facebook-apps-for-clients/" target="_blank">Ryan Waggoner</a> washing their hands of developing apps for Facebook, and Twitter introducing a new site which aggregates the information from the third party apps that helped make Twitter so ubiquitous.<br />
<span id="more-974"></span><br />
But whilst working on a site which needed to include links to lots of different social media sites, I got to thinking about the legal ramifications of using the brands that we now see so frequently they&#8217;ve become part of our <a href="http://frape.urbanup.com/2463827">vocabulary</a>.<br />
In the past I&#8217;ve designed custom icons to highlight links to social media sites, but rarely would I use the actual logo from a site. This is partly out of respect for the parent brand and partly because I do love drawing icons. However I thought I&#8217;d do a little investigative round-up of the major social media players, their terms-of-use and official logo downloads they offer. In all cases the first port of call was the Help section, generally positioned within the &#8216;small-print&#8217; pages of the site, although in the newly redesigned Twitter, Help appears within the drop-down menu next to your profile avatar, but some required a fair bit of digging to unearth.</p>
<p>Please note that, obviously, none of this should be taken as any sort of legal advice and I would recommend you refer to and abide by the Terms of Use of the specific brand in all cases. Any mistakes in the descriptions given here are my own. (Great, that&#8217;s my backside covered, let&#8217;s go!)</p>
<p><strong>Facebook</strong></p>
<p>As you might expect from a company with such a shady history of <a href="http://www.sophos.com/blogs/chetw/g/2010/10/07/facebook-groups-feature-rife-abuse/">privacy abuse</a>, Facebook have locked down the use of their logo pretty tightly. In fact to use the actual full word logo, you need Facebook&#8217;s express permission. What you can download is a square &#8216;f&#8217; logo, the &#8216;Connect with Us&#8217; rectangle and the &#8216;Like&#8217; button, each with guidelines around their usage. Interestingly the usage terms suggest that changing the design or colour is a breach and therefore not allowed.</p>
<p><a href="http://www.facebook.com/help/?faq=17566&amp;ref_query=logo#!/brandpermissions/logos.php">Terms of use and downloads</a></p>
<p><strong>Twitter</strong></p>
<p>Twitter, an arguably more laid back application with, until recently, an emphasis on open-source development, offers an array of logos and buttons (very nice buttons at that) as well as comprehensive guidelines on how to use it. They also encourage users to share screenshots of the Twitter site, with the caveat that you do not imply association with Twitter itself.</p>
<p><a href="http://support.twitter.com/articles/77641-guidelines-for-use-of-the-twitter-trademark">Guidelines for use</a></p>
<p><a href="http://twitter.com/about/files">Downloads</a><strong></strong></p>
<p><strong>LinkedIn</strong></p>
<p>The most popular social media site for business users gives pretty good guidance on usage of its logo in both on and offline communications. However I was unable to find versions of their logo specifically for download direct from their site, although I&#8217;m sure any resourceful interneteer would quickly be able to find one.</p>
<p><a href="http://developer.linkedin.com/docs/DOC-1101#general-use">Brand guidelines</a></p>
<p><strong>YouTube</strong></p>
<p>Being part of Google seems to have led to some confusion over the rights for using YouTube&#8217;s logo, after much searching I found a press-only downloads page which, to be fair, offers pretty good guidance (and strict limitations) on the logo&#8217;s usage. YouTube is different from other social media sites in that it&#8217;s content is generally embedded directly into other web pages rather than linked through an icon or text-link.</p>
<p><a href="http://www.youtube.com/t/press_room_image_files">Press only downloads and Terms of use</a></p>
<p><strong>Bonus site: Ecademy</strong></p>
<p>Not the most common social media site, but it came up during my Googling so I thought I&#8217;d take a closer look. Ecademy is a networking site, similar to LinkedIn, but with more emphasis on sharing knowledge and learning. They&#8217;ve recently re-branded and added downloads for a decent range of logos and buttons to promote your profile are available for use, but it took me a little while to find them since the site search doesn&#8217;t return results until you sign up. However once you&#8217;ve got the URL, anyone can find them.</p>
<p><a href="http://www.ecademy.com/node.php?id=4473">Logo downloads</a></p>
<p><strong>Extra Bonus: ipatter</strong></p>
<p>The recently launched ipatter.com, a site offering a new way for business and consumers to connect with each other, also encourages users to use the brand for promoting both their profile (for business users) and the site as a whole. There is also a range of buttons and link styles available for Broadcasters once you have registered.</p>
<p><a href="http://ipatter.com/support/brand-downloads">Brand downloads</a></p>
<p>(DISCLOSURE: ipatter was designed and developed by Soak)</p>
<p>It&#8217;s easy, in the still-pretty-wild-west-of-the-web, to get away with abusing brand guidelines and simply pasting a Google-sourced image onto your webpage. And this is fine for bloggers and casual users. But web professionals should be setting a standard of respect and accountability (just imagine if someone ripped off your own site brand) and this means following the terms set out by the intellectual property owner.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soak.co.uk/blog/terms-of-use-for-social-media-logos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

