<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet title="XSL_formatting" type="text/xsl" href="/blogs/shared/nolsol.xsl"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>

<title>
BBC Internet Blog
 - 
Neil Crosby
</title>
<link>https://bbcstreaming.pages.dev/blogs/bbcinternet/</link>
<description>Staff from the BBC&apos;s online and technology teams talk about BBC Online, BBC iPlayer, and the BBC&apos;s digital and mobile services. The blog is reactively moderated. Posts are normally closed for comment after three months. Your host is Eliza Kessler. </description>
<language>en</language>
<copyright>Copyright 2012</copyright>
<lastBuildDate>Tue, 04 Oct 2011 14:39:10 +0000</lastBuildDate>
<generator>http://www.sixapart.com/movabletype/?v=4.33-en</generator>
<docs>http://blogs.law.harvard.edu/tech/rss</docs> 


<item>
	<title>Building the BBC Homepage beta - an under the bonnet technical view </title>
	<description><![CDATA[<div class="imgCaptionCenter" style="text-align: center; display: block; "><img class="mt-image-center" style="margin: 0 auto 5px;" src="https://bbcstreaming.pages.dev/blogs/bbcinternet/2011/10/04/sprint-board-595.jpg" alt="Freestanding whiteboard with a grid of cards" width="595" height="335" />
<p style="width: 595px; font-size: 11px; color: #666666; margin: 0pt auto 20px;">Tasks for the BBC Homepage developers are tracked on the team sprint board</p>
</div>
<p><a href="https://bbcstreaming.pages.dev/blogs/bbcinternet/2010/05/new_bbc_homepage_launches.html">Eighteen months ago</a> we launched the current version of the BBC Homepage.  Essentially a<a href="https://bbcstreaming.pages.dev/blogs/bbcinternet/2010/03/evolution_of_the_bbc_homepage.html"> "lift and shift" of the previous version</a>, it allowed us to move from an older technology stack onto the one built on PHP - a consistent, shared infrastructure that is now used across BBC Online to enable seamless transition between our products.</p>
<p>Then, a few months ago we started work on <a href="http://beta.bbc.co.uk/">a new version of the homepage which we launched in beta mode two weeks ago</a>.  My colleague <a href="https://bbcstreaming.pages.dev/blogs/bbcinternet/2011/09/bbc_online_homepage_beta_producer.html">James explained our approach in a post at the time</a> - our aim was to arrive at a location-and-time-aware page which showcased more of BBC Online.  At least, that was the aim of the visual and interaction aspects of the page.  On the more technical side of things, we had other challenges to contend with, which I summarise below.</p>]]><![CDATA[<h2>Building a robust BBC Homepage</h2>
<p>We&rsquo;ve aimed to create a stable page that will keep on trucking no matter what happens.  Of course, we hope that everything will always work in the way that it&rsquo;s designed to, but as due diligence we have mitigated against the potential for things to go wrong.</p>
<p>There are two main ways that we do this.</p>
<p>Firstly, we make sure we listen for things going wrong.  I know that this sounds fairly obvious, but listening for exceptions and dealing with them rather than simply assuming that everything will always work means that we end up providing a much more dependable experience for the user.  So if the new pan-BBC locator widget tells us that something is wrong and we shouldn&rsquo;t use it at that time, it won&rsquo;t be displayed.  The rest of the page, however, will keep working and users won&rsquo;t be faced with an error for the entire page.</p>
<p>Another thing we did on the new homepage to mitigate against total failure was to allow each individual area of the homepage to be generated as a separate component.  This makes a lot of sense for a variety of reasons, but one of the most critical is that it allows each individual area of the homepage to care about its own problems, and not be bothered with the rest.</p>
<p>For example, when we ask the weather module to display itself, all that cares about is weather. We give it a few pieces of information about what it should display, it then calls the <a href="https://bbcstreaming.pages.dev/blogs/bbcinternet/weather/">BBC Weather product</a> for that data and displays results. It doesn't care about what's on TV, or whether that's having problems. And frankly, why should it?  So, if the &lsquo;What&rsquo;s On&rsquo; module, for example, fails for some reason then it will show a failure but not impact the wider page.</p>
<h2>Surfacing the breadth of BBC Online</h2>
<p>The most visually exciting area of the page &ndash; the carousel &ndash; is also one of the areas that required the most developmental input. This carousel is used to surface the breadth of content that the BBC has to offer in a way that wasn&rsquo;t possible on the previous homepage.  My colleague Steve Gibbons in BBC User Experience &amp; Design will blog soon on the way we approached this area from an interaction perspective.</p>
<p>Each area of the BBC that has content surfaced on the new homepage will produce content feeds, which the homepage then parses to ensure that the content will appear correctly on the page.</p>
<p>Within the carousel there are various different &ldquo;holes&rdquo; that feed items can fit into &ndash; widescreen, portrait, headline and blog post. When the data is parsed, various attributes are examined to determine whether or not the content will &ldquo;fit&rdquo; into a specific hole that&rsquo;s available.</p>
<p>For example, the left-most <a href="https://bbcstreaming.pages.dev/blogs/bbcinternet/iplayer/">BBC iPlayer</a> slot is expected to contain a widescreen image. The homepage parses the BBC iPlayer Highlights feed, looking for the newest item that contains a widescreen image of the correct aspect ratio, resizes the image to the correct size for our homepage, and then adds it to our final display feed. The homepage front-end then reads this final feed, and displays the items to our visitors.</p>
<p>Work continues with our colleagues who produce content to ensure that all the feeds contain the correct images and text attributes necessary to display them for the homepage, but it&rsquo;s good to know that the homepage will cope if anything in the feed isn&rsquo;t quite right.</p>
<h2>Guaranteeing a quality experience for all users</h2>
<p>With so many things on the page being movable and reflecting real-time updates, there was potential to get carried away, and complicate the experience for our visitors with slower connections and browsers, and for those who use assistive technologies.  With that in mind, our first iteration of the new homepage focused exclusively on making the page work in what we like to call "core mode". At that point in the development cycle, we pretended that <a href="http://en.wikipedia.org/wiki/JavaScript">JavaScript </a>did not exist. Instead, we simply made sure that every feature on the page would work for everyone, generally with full page refreshes taking the place of an <a href="http://en.wikipedia.org/wiki/Ajax_%28programming%29">AJAX </a>call.</p>
<p>What this means is that the page will always work, whether or not your browser's JavaScript <a href="http://en.wikipedia.org/wiki/Parsing">parser </a>has kicked in yet or not.</p>
<p>Once the page was working as intended, we then layered on the JavaScript. The nice thing at this point was that because we had already built the page to work, we could make the JavaScript fairly stupid. It would ask the server for some mark-up, the server would provide it, and the JavaScript would insert it into the page. As an anthropomorphised <a href="https://bbcstreaming.pages.dev/nature/life/Meerkat">meerkat </a>might say - "Simples".</p>
<h2>A BBC Homepage product with localisation at its core</h2>
<p>As well as ensuring that the homepage would stay running and be able to display information to all our users, there was also the requirement to make sure that we'd be able to localise it to provide native language support for Welsh and Gaelic speakers. Whilst this functionality is not yet complete in the beta of the homepage, it is something that we have baked into the codebase from the outset, to ensure that we will be able to support all of our visitors once the new homepage replaces the existing version. This was a decision we made early on, since it's a lot more difficult to add support for localisation later on in a project.</p>
<p>Ultimately, we intend to turn on localisation on the homepage such that if the user has explicitly set their location we&rsquo;ll show them news, weather, TV and Radio programmes local to them. As well as this, we expect to automatically set the user&rsquo;s location to their largest local city if they don&rsquo;t explicitly set their location.</p>
<h2>Next steps</h2>
<p>Obviously this blog post only covers a few of the technical challenges in building the new BBC Homepage.  There are many other things that we have done (including establishing ways of working with our development co-team in Cardiff) and a whole host of things we're still intending to do before we launch in full, based on your feedback on the beta version.  <a href="https://bbcstreaming.pages.dev/music/artists/7a3b3f80-04b8-4968-b432-fbcd3f350716">As Randy Bachman once sang</a>, "You ain't seen nothing yet".</p>
<p><em>Neil Crosby is a Senior Developer, BBC Future Media within <a href="https://bbcstreaming.pages.dev/blogs/bbcinternet/james_thornett/">James Thornett</a>'s Homepage and Search department.</em></p>]]></description>
         <dc:creator>Neil Crosby 
Neil Crosby
</dc:creator>
	<link>https://bbcstreaming.pages.dev/blogs/bbcinternet/2011/10/bbc_homepage_beta_software_technical.html</link>
	<guid>https://bbcstreaming.pages.dev/blogs/bbcinternet/2011/10/bbc_homepage_beta_software_technical.html</guid>
	<category>Homepage</category>
	<pubDate>Tue, 04 Oct 2011 14:39:10 +0000</pubDate>
</item>


</channel>
</rss>

 
