<?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>UVd &#124; Blog</title>
	<atom:link href="http://blog.ultravioletdesign.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ultravioletdesign.co.uk</link>
	<description>Creative digital agency specialising in website design, web applications, mobile website design and Flash Platform</description>
	<lastBuildDate>Tue, 31 Jan 2012 17:05:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>London Sencha Touch user group Roundup</title>
		<link>http://blog.ultravioletdesign.co.uk/london-sencha-touch-user-group-roundup/</link>
		<comments>http://blog.ultravioletdesign.co.uk/london-sencha-touch-user-group-roundup/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 16:56:59 +0000</pubDate>
		<dc:creator>Kirsten</dc:creator>
				<category><![CDATA[Industry Events]]></category>
		<category><![CDATA[UV]]></category>
		<category><![CDATA[mobile-apps]]></category>
		<category><![CDATA[mobile-web-apps]]></category>
		<category><![CDATA[services]]></category>

		<guid isPermaLink="false">http://blog.ultravioletdesign.co.uk/?p=940</guid>
		<description><![CDATA[A roundup of our first London Sencha Touch User Group]]></description>
			<content:encoded><![CDATA[<p>Tuesday evening saw our inaugural London Sencha Touch User group kick off in the salubrious surroundings of the Forward Technology amphitheatre with a few slices of pizza and a beer or two.</p>
<p>After a brief intro the evening kicked off with Patrick Hamann giving us a fairly pain free (tech ‘lite’) introduction to the Touch framework and giving us his opinions on where he thought it fitted within the plethora of development tools available.</p>
<p>Firstly giving us a bit of a low down into the development stack and providing us with some incites into when using the Touch framework might be a consideration, he went on to provide some useful examples of apps that have successfully utilised the framework and touched upon the useful templating and leveraging of SASS that is inherent in the framework.</p>
<p>Slides for Patrick’s talk can be viewed here:</p>
<p><script src="http://speakerdeck.com/embed/4f22674821e6f8002201a85b.js"></script></p>
<p>Following Patrick, Matt Spence from the University of Kent providing us with an interesting view of how their dev team were pushed to consider developing ‘something’ mobile for the university. Whilst he admitted this wasn’t the best approach to starting a project he went on to demonstrate how, with little development time available, his team were able to produce some rather useful student tools such as building locator (using maps), desktop availability (how many desktops are available in the various public spaces) and timetabling accessed via a student login. Matt demonstrated how the readily available university data can be made available as a useful mobile service for their students and how the rapid application development nature of Sencha Touch enabled them to get their mobile ‘something’ out to a testable market within a 4 week period. We look forward to seeing the results of the next 4 week sprint on the project.</p>
<p>Slides for Matt’s talk can be viewed here:</p>
<p><script src="http://speakerdeck.com/embed/4f1febca9d9fe6001f004b6c.js"></script></p>
<p>Rob Squires completed the trio of talks with a discussion primarily focussed on building cross-platform mobile apps using Sencha Touch 2.0 but also giving us a more technical ‘under the hood’ view of the framework. Rob showed us a re-usable technique he had developed utilising the MVC nature of the framework to tackle various challenges that building cross-platform apps can throw such as differences in UI/UX that mobile users come to expect with their particular flavour of devise and OS.</p>
<p>Slides for Rob&#8217;s talk can be viewed here:</p>
<p><script src="http://speakerdeck.com/embed/4f227a46a0a84d001f01cfc2.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ultravioletdesign.co.uk/london-sencha-touch-user-group-roundup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some Doctrine 2 Best Practices</title>
		<link>http://blog.ultravioletdesign.co.uk/some-doctrine-2-best-practices/</link>
		<comments>http://blog.ultravioletdesign.co.uk/some-doctrine-2-best-practices/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 17:49:10 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[doctrine]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.ultravioletdesign.co.uk/?p=881</guid>
		<description><![CDATA[Doctrine 2 has a very powerful database abstraction layer and features an Object Relational Mapper (ORM) that makes it very easy to manage relationships between the data in your application and provides tools that aid rapid application development (RAD). With Doctrine also comes DQL, a powerful language for querying your object models,  which is similar [...]]]></description>
			<content:encoded><![CDATA[<p>Doctrine 2 has a very powerful database abstraction layer and features an Object Relational Mapper (ORM) that makes it very easy to manage relationships between the data in your application and provides tools that aid rapid application development (RAD).</p>
<p>With Doctrine also comes DQL, a powerful language for querying your object models,  which is similar to SQL.</p>
<p>Use of Doctrine abstracts away the database concepts of tables and columns, rather you think in terms of objects, entities, properties and relationships. While this is very useful, it is very important for the developer to have an understanding of the underlying SQL that is generated from using the entity manager/DQL and querying your objects/entities.</p>
<p>Without an understanding of the code that Doctrine generates, it is relatively easy to build an inefficient and slow application, here are a few pitfalls that I have found are easy to fall into, and some tips that may be useful for people starting with Doctrine, or if you are trying to get a little more performance out of an existing application.</p>
<p>For the rest of this post I will use the cookie cutter example of a Blog website with article, user and comment object models (entities). In terms of object mapping we will assume all mapping is specified with the default (lazy) fetch method, and MySQL as our DB.</p>
<h3>1. Always write a DQL statement for querying your object models</h3>
<p>Doctrine repositories provide some ready made methods for fetching your objects such as &#8220;-&gt;findAll()&#8221; and &#8220;-&gt;findBy()&#8221;. These provide some convenience and brevity when initially developing your application but use of these functions is less flexible when further developing your application and can lead to some of the pitfalls below.</p>
<p>By writing the DQL yourself, you will expand your understanding of Doctrine, you have more control of the data you are trying to query and people reading your code will have a better understanding of what you are trying to do (and will find it easier to update and extend your code).</p>
<h3>2. Beware of lazy loading when querying entities with associations</h3>
<p>If you do not specify an &#8216;eager&#8217; fetch in your object mapping, or do not explicitly fetch your relationships in your DQL statements (or if you query your objects using the Doctrine methods mentioned in point 1) Doctrine will not fetch those associations in the SQL it generates<em>. </em>This is helpful as you do not want to be loading resources you do not need, however when you call a related object, Doctrine needs a method of fetching these objects and it does this by lazy loading through proxies.</p>
<p>For example if you have an article entity, with associated comments and you want to display a list of all your articles with number of comments on the front page of your blog, you may do something like this (this code is purely for demonstration).</p>
<pre class="prettyprint lang-php">$articles = $article_repository-&gt;findAll();

foreach($articles as $article)
{
    echo $article-&gt;getTitle();
    echo count($article-&gt;getComments());
}</pre>
<p>Using this code, Doctrine will initially generate a query for all the rows in the article table. As we have not &#8216;fetched&#8217; the comment association, Doctrine will lazy load in the comment object for each article via an additional SQL statement. For a table containing 10 rows, this will result in 11 database queries.</p>
<pre class="prettyprint lang-php">//$em is the entity manager
$qb = $em-&gt;createQueryBuilder();

$qb-&gt;select('Article', 'Comment')
    -&gt;from('Entity\Article', 'Article')
    -&gt;leftJoin('Article.comment', 'Comment');

$query = $qb-&gt;getQuery();

$result = $query-&gt;getResult();

return $result;</pre>
<p>Instead, by using DQL and specifying our relationships, we can use the above code to fetch the same data with 1 query vs the  11 (unnecessary) database queries generated previously. This problem grows with each additional row in a given database.</p>
<h3>3. Use array hydration for read only actions</h3>
<p>The Doctrine documentation recommends the use of array hydration for read only actions, this is in part due to the extra overhead (increased memory needed from loading proxies and the like) associated with hydrating objects.</p>
<p>If you are just displaying lists of items, or lists of entity properties for a single item (for example a product page, a list of recent blog articles, or indeed most front end operations!) you can use:</p>
<pre class="prettyprint lang-php">$query-&gt;getResult(Query::HYDRATE_ARRAY);</pre>
<p>This approach can also prevent any accidental lazy-loading problems that may arise as discussed previously (due to the lack of proxies!)</p>
<h3>4. By default Doctrine will fetch all of the properties for a given entity</h3>
<p>This doesn&#8217;t exactly fall under a best practice, indeed making any changes here too early in the development cycle would fall under premature optimisation. Nonetheless consider the following:</p>
<pre class="prettyprint lang-php">$qb-&gt;select('Article')
-&gt;from('Entity\Article');</pre>
<p>It is somewhat wasteful in terms of resources to fetch data from your database that you aren&#8217;t going to use. The above code snippet would fetch all the properties for the article entity.</p>
<p>Rather than selecting the whole object, in DQL you can specify specific properties to return in your select statement:</p>
<pre class="prettyprint lang-php">$qb-&gt;select('Article.title')
-&gt;from('Entity\Article');</pre>
<p>However this will always return a flat array, regardless of relationships between your entities. Instead you can select and hydrate partial objects in your DQL, which will give you an object or a nested array representing your object graph (depending on the hydration selected)</p>
<pre class="prettyprint lang-php">$query = $em-&gt;createQuery("SELECT partial Article.{title} Entity\Article Article");</pre>
<p>As stated in the Doctrine documents it is important to note here that this optimisation can lead to more fragile code, it may not always be clear (especially if working as part of a team, and working code written by others) that object properties have not been fetched.</p>
<h3>5. Use prepared statements</h3>
<p>Using prepared statements helps to prevent <a href="http://en.wikipedia.org/wiki/SQL_injection">SQL injection attacks</a> that have proven problematic for developers and businesses alike &#8211; Sony notably <a href="http://mashable.com/2011/06/02/sony-pictures-hacked/">exposed a lot of user data</a> in Summer 2011. See below for a quick example of how to use prepared statements in Doctrine.</p>
<pre class="prettyprint lang-php">$qb = $em-&gt;createQueryBuilder();

$qb-&gt;select('Article', 'Comment')
    -&gt;from('Entity\Article', 'Article')
    -&gt;leftJoin('Article.comment', 'Comment')
    -&gt;where($qb-&gt;expr()-&gt;eq('Article.title', ':filter_title')
    -&gt;setParameter('filter_title', $some_user_input);

$query = $qb-&gt;getQuery();

$result = $query-&gt;getResult();

return $result;</pre>
<p>The Doctrine documentation provides a <a href="http://www.doctrine-project.org/docs/dbal/2.1/en/reference/data-retrieval-and-manipulation.html#dynamic-parameters-and-prepared-statements">more in depth explanation</a> for achieving this.</p>
<h3>6. Be aware of what Doctrine is up to</h3>
<p>If you are using<a href="http://symfony.com/"> Symfony 2</a>, you can use the in-built profiler for monitoring the number of queries generated by doctrine. If you are using <a href="http://framework.zend.com/">Zend Framework</a> you can refer to <a href="http://labs.ultravioletdesign.co.uk/profiling-doctrine-2-with-zend-framework/">my previous blog post</a> covering some methods for profiling doctrine 1 or 2.</p>
<p>&nbsp;</p>
<p>I hope these tips prove helpful if you are just getting started with Doctrine, or if you have been using it for a little while. If you have any tips of your own let us know on twitter <a href="http://twitter.com/uv_d">@uv_d</a> or leave a comment</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ultravioletdesign.co.uk/some-doctrine-2-best-practices/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Come to our first London Sencha Touch User Group Meetup on Tues 24th Jan 2012</title>
		<link>http://blog.ultravioletdesign.co.uk/come-to-our-first-london-sencha-touch-user-group-meetup-on-24th-jan-2012/</link>
		<comments>http://blog.ultravioletdesign.co.uk/come-to-our-first-london-sencha-touch-user-group-meetup-on-24th-jan-2012/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 15:35:31 +0000</pubDate>
		<dc:creator>Kirsten</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Industry Events]]></category>
		<category><![CDATA[mobile-apps]]></category>
		<category><![CDATA[mobile-web-apps]]></category>
		<category><![CDATA[mobile-websites]]></category>
		<category><![CDATA[services]]></category>

		<guid isPermaLink="false">http://blog.ultravioletdesign.co.uk/?p=903</guid>
		<description><![CDATA[If you are interested in cross platform mobile development (native and web) built in web technologies such as HTML5 and JavaScript then please come and join us at the London Sencha Touch User Group Meetup.]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.ultravioletdesign.co.uk/wp-content/uploads/2012/01/STUG.jpg" rel="lightbox[903]"><img class="aligncenter size-full wp-image-904" src="http://blog.ultravioletdesign.co.uk/wp-content/uploads/2012/01/STUG.jpg" alt="" width="525" height="128" /></a>We’ve got a great venue sorted and finalised a date of <strong>Tuesday, January 24, 2012, 6:30 PM</strong> to come and chat, share, listen and learn about all things Sencha Touch. If you are interested in cross platform mobile development (native and web) built in web technologies such as HTML5 and JavaScript then please come and join us.</p>
<p>Our user group can be joined here: <a title="London Sencha TOuch User Group" href="http://www.meetup.com/London-Sencha-Touch-User-Group" target="_blank">http://www.meetup.com/London-Sencha-Touch-User-Group</a></p>
<p>We&#8217;ve been lucky enough to have Forward host the event in their amphitheatre in the heart of Camden. Details of how to get there are below:</p>
<p><strong>Forward Technology</strong><br />
Floor 2, Centro 3, 19 Mandela Street, London, NW1 0DU, United Kingdom<br />
<a title="venue address" href="http://forwardtechnology.co.uk/venue" target="_blank">http://forwardtechnology.co.uk/venue</a></p>
<p><strong>Transport Links:</strong></p>
<ul>
<li>Underground: Camden Town, Mornington Crescent (Both Northern Line)</li>
<li>Train: Euston, St Pancras International, Camden Road</li>
<li>Bus: 274, 46</li>
</ul>
<p>Being our first event we will be starting off soft with overviews into Sencha Touch and mobile development with an aim of getting a feel from the community as how we want to structure the events and what we all want to learn and share with each other. With that in mind we are on the look out for those of you who want to give a talk at this or future events. They can be anything from 5min lightening talks up to 30min in-depth slots: show us something you’ve worked on or something neat that we’d find useful. Please do get in touch if you want to contribute (it means you wont have to listen to us too much!)</p>
<p>We&#8217;re really looking forward to meeting the rest of the Sencha community in London and learning more about mobile development.</p>
<p><strong>UPDATE&#8230;. WE HAVE AN AGENDA:</strong></p>
<p>We have 3 sessions planned for this event each lasting 20-30 minutes with an open floor Q&amp;A session following each. We will start the group with a beer and a slice of pizza and move onto the 3 main sessions detailed below:</p>
<p><strong>An Introduction to Sencha Touch</strong></p>
<p>Patrick Hamann is a Front-end developer living and working in London with a keen passion for creating great mobile experiences using HTML5 frameworks. His talk will be a taster session introducing you to Sencha Touch giving some insight into why you might consider it as a solution.</p>
<ul>
<li>What is Sencha Touch?</li>
<li>A walk-through of the Sencha Touch structure</li>
<li>Capabilities and UI features</li>
<li>Real-world examples of it out in the wild</li>
</ul>
<p><strong>Kent Mobile: Building a mobile &#8220;something&#8221; for the University of Kent</strong></p>
<p>Matt Spence is from the IS web team at Kent University and will be providing some incites into their experience with Sencha Touch.</p>
<ul>
<li>The pressure to deliver something on a mobile platform</li>
<li>How we arrived at Sencha</li>
<li>What we&#8217;ve done</li>
<li>Where we&#8217;re going</li>
</ul>
<p><strong>Building cross platform apps using Sencha Touch</strong></p>
<p>Rob Squires is a Lead Developer with UVd with a penchant for utilising well established programming methodologies with new technologies. He is a Sencha fan and keen squash player.</p>
<p>His talk will focus on some techniques and considerations involved in building cross platform apps using Sencha Touch</p>
<ul>
<li>A quick look at common cross platform challenges</li>
<li>Some techniques that could be useful for a Sencha project requiring cross platform deployment</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.ultravioletdesign.co.uk/come-to-our-first-london-sencha-touch-user-group-meetup-on-24th-jan-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google to penalise websites that are not mobile friendly?</title>
		<link>http://blog.ultravioletdesign.co.uk/google-to-start-penalising-websites-that-are-not-mobile-friendly/</link>
		<comments>http://blog.ultravioletdesign.co.uk/google-to-start-penalising-websites-that-are-not-mobile-friendly/#comments</comments>
		<pubDate>Fri, 09 Dec 2011 00:02:47 +0000</pubDate>
		<dc:creator>Kirsten</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[mobile-websites]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[services]]></category>

		<guid isPermaLink="false">http://blog.ultravioletdesign.co.uk/?p=864</guid>
		<description><![CDATA[Are Google about to start penalising websites that are not mobile friendly within their rankings?]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.ultravioletdesign.co.uk/wp-content/uploads/2011/12/gomo.gif" rel="lightbox[864]"><img class="aligncenter size-full wp-image-866" src="http://blog.ultravioletdesign.co.uk/wp-content/uploads/2011/12/gomo.gif" alt="GOMO" width="525" height="128" /></a></p>
<p>Having spoken to our SEO specialist last night I was intrigued enough to do a bit of digging around Google’s position on ranking the usability of websites when viewed from different devices and how this fits in with their ranking algorithms. From an SEO perspective, our guy claimed that very soon Google will start penalising websites which are detrimental to mobile experiences.</p>
<p>First port of call for me is Google’s very own initiative <a title="GOMO" href="http://www.howtogomo.com" target="_blank">GOMO</a>, a pretty straightforward but useful site which lays out the business case for making your website mobile friendly, describes some of the basic principles of how to go about producing mobile friendly experiences and links to various resources for further reading/research. As a side note, when you get a chance, take a look at their site on your mobile devise as they have gone for a separate <a title="Native apps Vs mobile web apps: confused?" href="http://blog.ultravioletdesign.co.uk/native-apps-vs-mobile-web-apps/">mobile site</a> as opposed to a <a title="Responsive web design and small screen optimisation" href="http://blog.ultravioletdesign.co.uk/responsive-web-design-and-small-screen-optimisation/">responsive solution</a> and you can tell by the user experience and performance: it’s a nice example of an effective mobile website (yes I know that sounds like stating the bleed’in obvious given the context).</p>
<p>The ‘<a href="http://www.howtogomo.com/en/#gomo-meter" target="_blank">Gomo-Meter</a>’ is a useful tool for testing how mobile friendly a given website is. It provides a scoring mechanism, summary report and visuals as well as a rather useful detailed pdf report providing guidance on improving the mobile experience of the site you are testing. If you are digital agency such as us trying to sell your mobile website design/development services there is nothing better than a report generated by Google, demonstrating how (badly) a potential client&#8217;s website performs on a mobile device and outlining how best to remedy the problem/s. To give you an idea I ran the BBC website through the metre (see below):</p>
<p><a href="http://blog.ultravioletdesign.co.uk/wp-content/uploads/2011/12/gomo-bbc.jpg" rel="lightbox[864]"><img class="aligncenter size-full wp-image-868" src="http://blog.ultravioletdesign.co.uk/wp-content/uploads/2011/12/gomo-bbc.jpg" alt="gomo-bbc" width="525" height="432" /></a></p>
<p>At first, when our SEO guy mentioned Google might start penalising websites with poor mobile experiences we were unsure how they would go about it. To quote Pete <em>“How do you write an algorithm for that?”</em> but Patrick’s response <em>“If anyone can write an algorithm for that it’s Google”</em> just about hit the nail on the head. This is bread and butter for Google.</p>
<p>Having thought about this some more, there are a number of rudimentary tests which could be easily performed, testing the 2 fundamental principles of good mobile experiences:</p>
<ul>
<li>How fast does it load?</li>
<li>Accessibility (is the content fluid and viewable on a mobile without scrolling all over the place and are interactive elements given enough space?)</li>
</ul>
<p>As we know, the former is already performed by Google and the latter is not so difficult to envisage. Other good design practices for mobile web experiences include search, contact and location information being easily accessible from the first page. This is due to the nature of mobile users who want to access information quickly (through the search) and are often looking for contact or location information in the first instance. An automated test for these elements could be achieved if Semantic Web principles (utilising the W3C’s <a href="http://www.w3.org/RDF/" target="_blank">Resource Description Framework</a> or RDF) are adhered to and then tested for by Google.</p>
<p>I’m pretty sure Google are far cleverer than I so I’ll leave it to them to discuss my suggestions further and come up with a beautiful algorithm <img src='http://blog.ultravioletdesign.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>For those who are still wondering why Google might introduce ‘mobile friendliness’ to their rankings, the expanding use of mobile devices is becoming something they cannot ignore: growth in smart phone usage, sales via smartphones, engagement via smartphones and growth in web browsing on smartphones is at an exponential rate and as a consequence this is changing the way we all experience the web:</p>
<ul>
<li>Smartphones sales surpassed the combined global market of desktops, laptops and notebooks in 2010 <a href="http://bit.ly/gCkOt4" target="_blank">http://bit.ly/gCkOt4</a></li>
<li>Traffic to mobile websites in 2010 grew 600% after tripling between 2009 and 2010 <a href="http://bit.ly/cYWwJj" target="_blank">http://bit.ly/cYWwJj</a></li>
<li>Google’s mobile searches grew 130% in the third quarter of 2010 <a href="http://tcrn.ch/haMlZm" target="_blank">http://tcrn.ch/haMlZm </a></li>
</ul>
<p>So to conclude, it looks like our SEO guy might be right, Google appears to be moving toward some sort of introduction of &#8216;mobile friendliness&#8217; into their rankings. Good news for those of us who have been banging on about sites needing to be accessible across all devices.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ultravioletdesign.co.uk/google-to-start-penalising-websites-that-are-not-mobile-friendly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Full Frontal 2011</title>
		<link>http://blog.ultravioletdesign.co.uk/full-frontal-2011/</link>
		<comments>http://blog.ultravioletdesign.co.uk/full-frontal-2011/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 15:22:27 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Industry Events]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.ultravioletdesign.co.uk/?p=833</guid>
		<description><![CDATA[Earlier this month I attended <a href="http://2011.full-frontal.org/" target="_blank">Fullfrontal</a> Javascript 2011 conference hosted by <a href="https://twitter.com/rem" target="_blank">Remy Sharp</a> in lovely Brighton. I’ve wanted to attend since it started three years ago but have always had something in the way. So I jumped on a train at stupid o’clock on a very cold and misty morning and managed to finish off ‘Mobile First’ on the commute before grabbing a well deserved coffee with Tom Parker at Coffee@33.]]></description>
			<content:encoded><![CDATA[<p>Earlier this month I attended <a href="http://2011.full-frontal.org/" target="_blank">Full Frontal</a> Javascript 2011 conference hosted by <a href="https://twitter.com/rem" target="_blank">Remy Sharp</a> in lovely Brighton. I’ve wanted to attend since it started three years ago but have always had something in the way. So I jumped on a train at stupid o’clock on a very cold and misty morning and managed to finish off ‘<a href="http://www.abookapart.com/products/mobile-first" target="_blank">Mobile First</a>’ on the commute before grabbing a well deserved coffee with Tom Parker at Coffee@33.</p>
<p>The conference was held in the beautiful <a href="http://www.picturehouses.co.uk/cinema/Duke_Of_Yorks" target="_blank"></a>‘Duke of Yorks’ independent cinema in Preston Circus, meaning the comfy sofa seats were a serious upgrade from the normal plastic seats I’m used to at conferences. Perfect to settle into for a day of insightful talks after my early rise. I won’t discuss all of the days content as we’d be here for weeks, but here were my highlights.</p>
<h3>CoffeeScript Design Decisions &#8211; <a href="https://twitter.com/jashkenas" target="_blank">Jeremy Ashkenas</a></h3>
<p>I was extremely happy to see <a href="https://twitter.com/jashkenas" target="_blank">Jeremy</a> on the bill for Full Frontal, as we’re big fans of Backbone.js in the office and try and squeeze it into every project. That said he was actually on the bill to speak about Coffeescript, a new approach of writing js in a minimal fashion that at the same time tries to smooth out some of the ‘gaps’ in the language. I won’t go into the details of Coffeescript as you can learn more <a href="//jashkenas.github.com/coffee-script/" target="_blank">here</a>, but Jeremy explained the core concepts very well; you would hope so from the creator;). The main points I took home were ‘It’s ok to cheat!’ why should we have to re-wrtie the book every time we start a project, but at the same time using Coffeescript we can extend/bend js language to our own.</p>
<blockquote><p>&#8220;HTML5 is about taking js seriously!&#8221;</p></blockquote>
<h3>Excessive Enhancement – <a href="https://twitter.com/philhawksworth" target="_blank">Phil Hawksworth</a></h3>
<p><a href="https://twitter.com/philhawksworth" target="_blank">Phil&#8217;s</a> talk was on a subject very close to my heart about ‘Excessive enhancement’. With the boom of Javascript over the last couple of years, especially surrounding UI development and DOM manipulation, he raised some very important questions. Are we over doing it with our ‘Browser sizzle’? Is it ok to load in 10mb of images on page load for some fancy effects or should be loading them in lazily? Whoever thought the hashbang /#! was a good idea? That last point was probably the most important, are we going to look back on this era of the web as the years of lost content. Start using the History API and .pushState() today!</p>
<h3>Scalable Javascript Application Architecture – <a href="https://twitter.com/slicknet/" target="_blank">Nicholas Zakas</a></h3>
<p>The talk I was looking forward to the most, if you’ve ever done any research into js design patterns or application architecture you would have found <a href="https://twitter.com/slicknet/" target="_blank">Nicholas&#8217;s</a> name; he didn’t let us down. The talk was full of clear and concise definitions of architecture principles such as the module and mediator patterns and went on to describe how to structure your applications for re-use , extensibility and scalability. It really drilled home to me the importance of planning ahead in your application design to try to loosely couple as many components as possible.</p>
<blockquote><p>&#8220;A scalable js architect allows you to replace any block in a Jenga tower without fear of it toppling over&#8221;</p></blockquote>
<p>If you haven’t already done so, I strongly advise checking out his slides <a href="http://www.slideshare.net/nzakas/scalable-javascript-application-architecture" target="_blank">here</a>.</p>
<h3>Beyond the planet of geeks &#8211; <a href="https://twitter.com/brendandawes">Brendan Dawes</a></h3>
<p>A very controversial move to have a designer most famous for his ‘Flash’ work to talk at a JS conference&#8230; but I bet everyone was happy he did! Extremely insightful for me, forcing us to take a step back and remember that our work can still be fun.</p>
<blockquote><p>&#8220;If you don’t go into the woods, nothing will ever happen in your life.&#8221;</p></blockquote>
<p>Drawing from his obsession of collecting weird objects such as pencils, to his work at <a href="http://mnatwork.com/">Magnectic North</a>, <a href="https://twitter.com/brendandawes" target="_blank">Brendan</a> showed us that we should ‘obsess about our tools’. He also expressed the importance of continuing to experiment and explore new technologies and interfaces, canvas, svg e.t.c  as they are here to be used today. His talk was summed up by my favorite quote of the day.</p>
<blockquote><p>&#8220;When you get good at something try something different&#8221;</p></blockquote>
<p>Although agnostic of languages or platforms, Brendan hinted towards the end of the Flash era and even stated that although it will always have its uses to become ubiqutus we may ‘need to leave some things behind’.</p>
<h3>You gotta do what you gotta do &#8211; <a href="https://twitter.com/mwichary">Marcin Wichary</a></h3>
<p>What can I say, this guy has the best job in the world. For 20% of his time <a href="https://twitter.com/mwichary" target="_blank">Marcin</a> is one of the interface engineers for the ‘<a href="http://www.google.com/logos/" target="_blank">Google Doodles</a>’. Be it Pac-Man or dancing lady, he has worked on some very cool projects. In this talk he showed us how they have used some very clever techniques to overcome the issues you can have trying to serve a project to 6 billion people. For example <a href="http://www.smashingmagazine.com/2011/07/08/interview-google-marcin-wichary/" target="_blank">crushinator</a> which cuts up animations into individual frame <a href="http://www.google.com/logos/2011/graham11-hp-sprite.png" target="_blank" rel="lightbox[833]">sprites</a> that get overlaid on each other or using the devices accelerometer to control <a href="http://www.aresluna.org/verne-ux/" target="_blank">submarines</a>. By far the funniest and most interesting talk I have seen this year!</p>
<p>Overall the day was a great success for me. I was very glad that the subjects of the talks were well rounded having something for everything and not just about how we should be caching our for-loop vars. All were educating and insightful, which leads me to think that the lack of video recordings is a shame as this knowledge may be lost forever (but I know that Remy is working on this ☺). Although, at the very reasonable price of the conference I don’t blame the man, in this day an age of conferences costing towards £1000 Full Frontal is an absolute bargain and extremely good value for money. Finished off with good discussions with friends and a nice drink by the seaside. What more could you want from a conf? I’ll definitely be back next year!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ultravioletdesign.co.uk/full-frontal-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>London Node.js User Group</title>
		<link>http://blog.ultravioletdesign.co.uk/london-node-js-user-group/</link>
		<comments>http://blog.ultravioletdesign.co.uk/london-node-js-user-group/#comments</comments>
		<pubDate>Thu, 29 Sep 2011 09:17:19 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Industry Events]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[lnug]]></category>
		<category><![CDATA[node.js]]></category>

		<guid isPermaLink="false">http://blog.ultravioletdesign.co.uk/?p=801</guid>
		<description><![CDATA[Last night we attended the inaugural <a href="http://lnug.org">London Node User Group</a>  or to those in the know l-nug <a href="http://twitter.com/search/%23lnug">#lnug</a>.  We have been experimenting with node.js internally here all year and are extremely excited by the prospects it may hold for our clients and us in the future, aside from the fact we love all things javascript and who wouldn’t want to write asynchronous code….]]></description>
			<content:encoded><![CDATA[<p>Last night we attended the inaugural <a href="http://lnug.org">London Node User Group</a> or to those in the know l-nug <a href="http://twitter.com/search/%23lnug">#lnug</a>.  We have been experimenting with node.js internally here all year and are extremely excited by the prospects it may hold for our clients and us in the future, aside from the fact we love all things javascript and who wouldn’t want to write asynchronous code….</p>
<p>The event was hosted and sponsored by the fine chaps at <a href="http://forwardtechnology.co.uk/">Forward</a> in their rather swanky Camden offices and  kicked off with a lovely round of free drinks and pizza (courtesy of Forward), some great informal networking and discussions surrounding the likes of the new <a href="http://amazonsilk.wordpress.com/2011/09/28/introducing-amazon-silk/">Kindle Silk browser</a> and <a href="http://www.guardian.co.uk/technology/2011/sep/27/facebook-open-graph-web-underclass">Facebook&#8217;s plans to take over the world</a>. A good warm up to get the brains ticking for the night&#8217;s 3 main talks:</p>
<p>Forward&#8217;s own <a href="http://twitter.com/andykent">Andy Kent</a> started the night with: “Real time data analysis over unbounded streams” a look into the libraries he has been producing internally at Forward for real-time keyword data analysis specifically his <a href="https://github.com/andykent/creek">Creek</a> streaming aggregator used in production to track popular words and urls across different data streams. We were particularly impressed to see it being benchmarked in production environments clocking 500 hits a second without even flinching.</p>
<p><a href="http://www.garrensmith.com/">Garren Smith</a> gave a very insightful talk “These are the ORM&#8217;s you are looking for” discussing a few options you have for ORM’s in node to create abstraction layers between your code and your lovely NoSQL db’s for object relational mapping bliss (and we are <a href="http://labs.ultravioletdesign.co.uk/using-mysqls-date_format-in-doctrine-2-0/">big fan’s of ORMs</a>). Specifically <a href="http://www.garrensmith.com/LazyBoy/">LazyBoy</a> which he wrote for couch (our personal favorite NoSQL) and we have used for personal projects. Bringing support for defaults, CRUD, relationships (hasmany e.t.c) and couch view goodness.</p>
<p><a href="http://twitter.com/rtweed">Rob Tweed</a> finished the night with a rather controversial (well at least at a node group) talk on the Globals database, a very reliable high performance in-process (i.e. no network layer) NoSQL database (tongue twister) that predates the NoSQL era, abstracted from Caché db. My favorite quote of the night was from Rob, when discussing getting into node.js:</p>
<blockquote><p>If Douglas Crockford is talking about it, then it must be good!</p></blockquote>
<p>Not for the faint hearted, Globals is a extremely low-level storage engine for which you have to write your api’s yourself, even indexing! However, this allows you to be a lot more flexible in creating your db’s. Rob’s interesting point was that after a lot of testing and benchmarking he found that when using Globals and &#8220;blocking&#8221; on high performace enterprise level projects, synchronous db calls where faster than the as aysnc possibilities node gives us. This led into a great Q&amp;A session from the all the aync fan boys in the room.</p>
<p>After the event we all headed to the grand union for some post-event discussion, where I discussed the possibility of using Node in some upcoming mobile projects we have, with some great ideas coming from people for real life uses for sockets and node in mobile development, so watch this space.</p>
<p>Overall the event was a great start to what &#8211; we hope &#8211; will be long running user group, a great community of people all pushing the technology to new and exciting places. Firmly rooting the fact that server side javascript is here to stay, and is ready for production use! A massive thanks to <a href="http://twitter.com/teabass">Andrew Nesbitt</a> and <a href="http://twitter.com/andykent">Andy Kent</a> and Forward for being great hosts. We&#8217;re always happy to meet new friends in the london tech scene so why not follow us on twitter: <a href="http://twitter.com/uv_d">UV<sup>d</sup></a> <a href="http://twitter.com/patrickhamann">Patrick Hamann</a></p>
<p>I will update the post once the slides/videos for the night have been released.</p>
<p>UPDATE: <a href="http://www.flickr.com/photos/forwardtechnology/sets/72157627778958764/">Forwards Flickr photoset from the night</a>.<br />
UPDATE: <a href="http://vimeo.com/29779103">Video of Andy Kent&#8217;s talk “Real time data analysis over unbounded streams”</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ultravioletdesign.co.uk/london-node-js-user-group/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Native App beta testing with TestFlight</title>
		<link>http://blog.ultravioletdesign.co.uk/native-app-beta-testing-with-testflight/</link>
		<comments>http://blog.ultravioletdesign.co.uk/native-app-beta-testing-with-testflight/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 19:57:19 +0000</pubDate>
		<dc:creator>Kirsten</dc:creator>
				<category><![CDATA[Project Work]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[distribution]]></category>
		<category><![CDATA[mobile-apps]]></category>
		<category><![CDATA[mobile-web-apps]]></category>
		<category><![CDATA[services]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://blog.ultravioletdesign.co.uk/?p=793</guid>
		<description><![CDATA[We discover the beauty of distributing and beta testing our mobile Apps with TestFlight]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.ultravioletdesign.co.uk/wp-content/uploads/2011/09/testflight.jpg" rel="lightbox[793]"><img class="aligncenter size-full wp-image-794" src="http://blog.ultravioletdesign.co.uk/wp-content/uploads/2011/09/testflight.jpg" alt="TestFlight" width="525" height="182" /></a><br />
The prototype of our latest mobile App has flown the nest with the help of the very useful iOS beta testing software <a title="TestFLight Homepage" href="https://testflightapp.com" target="_blank">TestFlight </a>which is proving to be a great tool during our distribution, testing and UAT cycles.</p>
<p>Patrick discovered TestFlight during the end of our phase 1 development of a mobile betting application for one of our clients ABETA International. As we&#8217;ve mentioned before, we build <a title="Mobile Web Applications" href="http://www.ultravioletdesign.co.uk/services/going-mobile/mobile-web-applications">mobile web applications</a> and <a title="Native Mobile Applications" href="http://www.ultravioletdesign.co.uk/services/going-mobile/mobile-application-development">native mobile application</a>s using the <a title="SenchaTouch Framework" href="http://www.sencha.com/products/touch" target="_blank">SenchaTouch Framework</a>; enabling us to produce intuitive mobile user experiences (UX) and user interfaces (UI) with the expertise and technology we have gained over years designing and building websites. Not wishing to repeat myself too much (it’s all <a title="Native Apps Vs Mobile Web Apps" href="http://blog.ultravioletdesign.co.uk/native-apps-vs-mobile-web-apps/">here</a>) we then package this up using <a title="PhoneGap" href="http://www.phonegap.com/" target="_blank">PhoneGap </a>for delivery to iPhone, iPad or Android devices.</p>
<p>One of the hurdles once the App is ready for client testing, bug testing or user acceptance testing (UAT) and the subsequent rounds of incremental version releases is how to achieve this in the most efficient way possible: obviously with website and web applications it’s a matter of setting up a staging or testing environment and providing a link, following that can be several rounds of testing – bug fixing &#8211; testing (I have paraphrased this process for illustration purposes only) but with Apps it’s a bit harder as we have to be able to distribute the App to the devices that our developers, clients and testers are using and in the case of our clients they are not in our office.</p>
<p>TestFlight is brilliant for this; from a single entry point you can distribute to predefined groups, set up new users within a group and create custom distribution lists to send new builds over the ‘air’. In simple terms, we can release a new iteration of an App and it gets distributed to the group who are alerted to the new version. Users can send feedback directly through the app (with in-app questions using their new <a href="https://testflightapp.com/sdk/">SDK</a>) or by replying directly to TestFlight automated emails, and this feedback is distributed to the developers assigned. </p>
<p>Its early days and we have only scratched the surface of what TestFlight can do but I thought I’d give my first impressions as it might be of use to others.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ultravioletdesign.co.uk/native-app-beta-testing-with-testflight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>London JS: node.js &amp; express.js</title>
		<link>http://blog.ultravioletdesign.co.uk/london-js-node-js-express-js/</link>
		<comments>http://blog.ultravioletdesign.co.uk/london-js-node-js-express-js/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 11:53:45 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Industry Events]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[node.js]]></category>

		<guid isPermaLink="false">http://blog.ultravioletdesign.co.uk/?p=772</guid>
		<description><![CDATA[Last night we attended our 3rd London JS meetup, held at the offices of the event sponsor Poke, in Shoreditch. Hungry from another busy start to the week, we were once again pleasantly surprised by Poke&#8217;s generosity who had provided 15 (we counted) Papa John&#8217;s pizzas and enough Peroni to put a Pizza Express to [...]]]></description>
			<content:encoded><![CDATA[<p>Last night we attended our 3rd <a href="http://lanyrd.com/2011/ldnjs05/" target="_blank">London JS</a> meetup, held at the offices of the event sponsor <a href="http://www.pokelondon.com/" target="_blank">Poke</a>, in Shoreditch.</p>
<p>Hungry from another busy start to the week, we were once again pleasantly surprised by Poke&#8217;s generosity who had provided 15 (we counted) Papa John&#8217;s pizzas and enough Peroni to put a Pizza Express to shame. There were 3 talks on the agenda + we had been particularly looking forward to hearing what the speakers had to say about Node.js.</p>
<p><a href="http://lanyrd.com/profile/paul_kinlan/" target="_blank">Paul Kinlan</a> started proceedings discussing and demoing <a href="https://github.com/PaulKinlan/leviroutes" target="_blank">LeviRoutes</a>, a javascript routing framework he had built for Google.io. Using the <a href="http://diveintohtml5.org/history.html" target="_blank">HTML 5 History API</a>, this looks like a bloomin&#8217; useful bit of kit when you&#8217;re developing single page apps.</p>
<p><a href="http://lanyrd.com/profile/alex_young/" target="_blank">Alex Young</a> then gave us a great account of implementing <a href="http://nodejs.org/" target="_blank">Node.js</a> + <a href="http://expressjs.com/" target="_blank">Express</a> in the real world, providing some particularly useful + comical tips on how/when to persuade a client that node is the way forward.</p>
<p><a href="http://lanyrd.com/profile/miksago/" target="_blank">Michael Smith</a> ended the evening with his introduction to Nodejs, discussing the wider applications (other than as an HTTP server) that node is suited to and even fitting in some live coding before his battery run out!</p>
<p><strong>Another great event from London JS, thanks guys&#8230;looking forward to the next one!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ultravioletdesign.co.uk/london-js-node-js-express-js/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Pete Has Arrived!</title>
		<link>http://blog.ultravioletdesign.co.uk/pete-has-arrived/</link>
		<comments>http://blog.ultravioletdesign.co.uk/pete-has-arrived/#comments</comments>
		<pubDate>Wed, 24 Aug 2011 14:54:08 +0000</pubDate>
		<dc:creator>Kirsten</dc:creator>
				<category><![CDATA[banter]]></category>
		<category><![CDATA[UV]]></category>
		<category><![CDATA[employees]]></category>
		<category><![CDATA[LAMP]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.ultravioletdesign.co.uk/?p=761</guid>
		<description><![CDATA[Our latest and greatest new arrival to date, Peter Mitchell, ‘Mitch’ or as he is now known ‘Maverick’, hot off an MSc in Cancer Immunology and Biotechnology is now utilising his analytical and practical skills within the Web Development arena! UVd welcome Pete to the fold with open arms and look forward to sharing many [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.ultravioletdesign.co.uk/wp-content/uploads/2011/08/photo.jpg" rel="lightbox[761]"><a href="http://blog.ultravioletdesign.co.uk/wp-content/uploads/2011/08/photo1.jpg" rel="lightbox[761]"><img class="aligncenter size-full wp-image-767" src="http://blog.ultravioletdesign.co.uk/wp-content/uploads/2011/08/photo1.jpg" alt="" width="525" height="192" /></a><br />
</a>Our latest and greatest new arrival to date, Peter Mitchell, ‘Mitch’ or as he is now known ‘<a title="Maverick" href="http://www.imdb.com/character/ch0005702/" target="_blank">Maverick</a>’, hot off an MSc in Cancer Immunology and Biotechnology is now utilising his analytical and practical skills within the Web Development arena! UV<sup>d</sup> welcome Pete to the fold with open arms and look forward to sharing many cups of tea and cake with our newest Web Developer extraordinaire.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ultravioletdesign.co.uk/pete-has-arrived/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Responsive web design and small screen optimisation</title>
		<link>http://blog.ultravioletdesign.co.uk/responsive-web-design-and-small-screen-optimisation/</link>
		<comments>http://blog.ultravioletdesign.co.uk/responsive-web-design-and-small-screen-optimisation/#comments</comments>
		<pubDate>Fri, 01 Jul 2011 14:09:56 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[White Papers]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[mobile-websites]]></category>
		<category><![CDATA[responsive-web]]></category>
		<category><![CDATA[services]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[UX]]></category>
		<category><![CDATA[web design]]></category>

		<guid isPermaLink="false">http://blog.ultravioletdesign.co.uk/?p=740</guid>
		<description><![CDATA[Patrick has written a white paper to outline a process called 'responsive design and enhancement' that can be used to optimise your website’s content and adapt to different screen sizes and devices.]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.ultravioletdesign.co.uk/wp-content/uploads/2011/07/responsive-web-design.jpg" rel="lightbox[740]"><img class="aligncenter size-full wp-image-746" src="http://blog.ultravioletdesign.co.uk/wp-content/uploads/2011/07/responsive-web-design.jpg" alt="responsive web design" width="525" height="197" /></a></p>
<p>The way people are using and accessing websites is changing. This is due to users having more diverse browsing experiences on a multitude of devices, including desktop browsers, smartphones, tablets and more. This creates challenges for web producers regarding how we should design for different screen sizes, resolutions and types of interaction (e.g. touch). More than that, it calls into question what it really means to design for the web today.</p>
<p>With new devices available, the one-size-fits-all approach to web design that we’ve stuck with for so long is no longer relevant. It’s now essential that the designs that we create are responsive to the different ways that users access our content. This document is intended to outline a process called &#8216;responsive web design and enhancement&#8217; that can be used to optimise your website’s content and adapt to different screen sizes and devices. Download the document here:</p>
<p><a title="Responsive web design and small screen optimisation" href="http://blog.ultravioletdesign.co.uk/wp-content/uploads/2011/07/responsive_web_design1.pdf" target="_blank">Responsive web design and small screen optimisation</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ultravioletdesign.co.uk/responsive-web-design-and-small-screen-optimisation/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

