Fetching and Cleaning HTML Text

NLP 2020 - HW1

We will compare two different methods to clean raw HTML text into text. HTML pages contain many "non textual" elements, in the form of HTML tags, jscript code, lots of advertisement and in general repetitive content which we will refer to as "boilerplate" content (menus, navigation etc).

We are intersted in extracting from a random HTML page the non-boilerplate textual content.

We will compare two libraries that achieve this.

First, let us get raw HTML from a URL:

In [1]:
import requests

url = "http://www.bbc.com/news/technology-26415021"
html = requests.get(url).text

Let us inspect the resulting raw HTML string we obtained:

In [2]:
print(html[:200])

<!DOCTYPE html>
<html lang="en" id="responsive-news">
<head  prefix="og: http://ogp.me/ns#">
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=1">
    <meta chars

Too many white spaces and empty lines, let us clean it up a bit:

In [3]:
import re

html = re.sub("[\r\n]+", "\n", html)
html = re.sub("[\n]+", "\n", html)
html = re.sub("[\t, ]+"," ", html)
In [4]:
html
Out[4]:
'\n<!DOCTYPE html>\n<html lang="en" id="responsive-news">\n<head prefix="og: http://ogp.me/ns#">\n <meta name="viewport" content="width=device-width initial-scale=1 user-scalable=1">\n <meta charset="utf-8">\n <meta http-equiv="X-UA-Compatible" content="IE=edge chrome=1">\n <title>An hour to catch the coding bug - BBC News</title>\n <meta name="description" content="Is it possible to get children interested in computer programming in just 60 minutes? The Hour of Code has been designed to do just that.">\n <link rel="preload" as="style" href="https://static.bbc.co.uk/news/1.303.03507/stylesheets/services/news/compact.css" media="(max-width: 599px)">\n <link rel="preload" as="style" href="https://static.bbc.co.uk/news/1.303.03507/stylesheets/services/news/tablet.css" media="(min-width: 600px) and (max-width: 1007px)">\n <link rel="preload" as="style" href="https://static.bbc.co.uk/news/1.303.03507/stylesheets/services/news/wide.css" media="(min-width: 1008px)">\n <script> window.orb_fig_blocking = true; </script>\n \n <link rel="preload" as="script" href="//fig.bbc.co.uk/frameworks/fig/2/fig.js?callback=orb.orb_fig">\n \n <link href="//static.bbci.co.uk" rel="preconnect" crossorigin>\n <link href="//static.bbc.co.uk" rel="preconnect" crossorigin>\n <link href="//nav.files.bbci.co.uk" rel="preconnect" crossorigin>\n <link href="//ichef.bbci.co.uk" rel="preconnect" crossorigin>\n <link rel="dns-prefetch" href="//ssl.bbc.co.uk/">\n <link rel="dns-prefetch" href="//sa.bbc.co.uk/">\n <link rel="dns-prefetch" href="//ichef.bbci.co.uk/">\n <link rel="dns-prefetch" href="//c.go-mpulse.net/">\n <link rel="dns-prefetch" href="//edigitalsurvey.com">\n <meta name="x-country" content="il">\n <meta name="x-audience" content="International">\n <meta name="CPS_AUDIENCE" content="International">\n <meta name="CPS_CHANGEQUEUEID" content="">\n <link rel="canonical" href="https://www.bbc.com/news/technology-26415021">\n <link rel="alternate" hreflang="en-gb" href="https://www.bbc.co.uk/news/technology-26415021">\n <link rel="alternate" hreflang="en" href="https://www.bbc.com/news/technology-26415021">\n <meta property="og:title" content="How to get your children coding" />\n <meta property="og:type" content="article" />\n <meta property="og:description" content="Is it possible to get children interested in computer programming in just 60 minutes? The Hour of Code has been designed to do just that." />\n <meta property="og:site_name" content="BBC News" />\n <meta property="og:locale" content="en_GB" />\n <meta property="article:author" content="https://www.facebook.com/bbcnews" />\n <meta property="article:section" content="Technology" />\n <meta property="og:url" content="https://www.bbc.com/news/technology-26415021" />\n <meta property="og:image" content="https://ichef.bbci.co.uk/news/1024/media/images/73325000/jpg/_73325163_olly009.jpg" />\n <meta property="og:image:alt" content="BBC News. Screenshot from the hour of code" />\n <meta property="fb:pages" content="1143803202301544 317278538359186 1392506827668140 742734325867560 185246968166196 156060587793370 137920769558355 193435954068976 21263239760 156400551056385 929399697073756 154344434967 228735667216 80758950658 260212261199 294662213128 1086451581439054 283348121682053 295830058648 239931389545417 304314573046 310719525611571 647687225371774 1159932557403143 286567251709437 1731770190373618 125309456546 163571453661989 285361880228 512423982152360 238003846549831 176663550714 260967092113 118450564909230 100978706649892 15286229625 122103087870579 120655094632228 102814153147070 124715648647 153132638110668 150467675018739" />\n <meta name="twitter:card" content="summary_large_image">\n <meta name="twitter:site" content="@BBCWorld">\n <meta name="twitter:title" content="How to get your children coding">\n <meta name="twitter:description" content="Is it possible to get children interested in computer programming in just 60 minutes? The Hour of Code has been designed to do just that.">\n <meta name="twitter:creator" content="@BBCWorld">\n <meta name="twitter:image:src" content="https://ichef.bbci.co.uk/news/1024/media/images/73325000/jpg/_73325163_olly009.jpg">\n <meta name="twitter:image:alt" content="Screenshot from the hour of code" />\n <meta name="twitter:domain" content="www.bbc.com">\n <script type="application/ld+json">\n {"@context":"http:\\/\\/schema.org" "@type":"ReportageNewsArticle" "url":"https:\\/\\/www.bbc.com\\/news\\/technology-26415021" "publisher":{"@type":"NewsMediaOrganization" "name":"BBC News" "publishingPrinciples":"http:\\/\\/www.bbc.co.uk\\/news\\/help-41670342" "logo":{"@type":"ImageObject" "url":"https:\\/\\/www.bbc.co.uk\\/news\\/special\\/2015\\/newsspec_10857\\/bbc_news_logo.png?cb=1"}} "datePublished":"2014-03-03T10:22:55+00:00" "dateModified":"2014-03-03T10:22:55+00:00" "headline":"How to get your children coding" "image":{"@type":"ImageObject" "width":720 "height":450 "url":"https:\\/\\/ichef.bbci.co.uk\\/news\\/720\\/media\\/images\\/73325000\\/jpg\\/_73325163_olly009.jpg"} "thumbnailUrl":"https:\\/\\/ichef.bbci.co.uk\\/news\\/208\\/media\\/images\\/73325000\\/jpg\\/_73325163_olly009.jpg" "author":{"@type":"Person" "name":"Mark Ward"} "mainEntityOfPage":"https:\\/\\/www.bbc.com\\/news\\/technology-26415021"}\n </script>\n <meta name="apple-itunes-app" content="app-id=364147881 app-argument=https://www.bbc.com/news/technology-26415021?utm_medium=banner&utm_content=apple-itunes-app">\n \n <meta name="apple-mobile-web-app-title" content="BBC News">\n<link rel="apple-touch-icon-precomposed" sizes="57x57" href="https://static.bbc.co.uk/news/1.303.03507/apple-touch-icon-57x57-precomposed.png">\n<link rel="apple-touch-icon-precomposed" sizes="72x72" href="https://static.bbc.co.uk/news/1.303.03507/apple-touch-icon-72x72-precomposed.png">\n<link rel="apple-touch-icon-precomposed" sizes="114x114" href="https://static.bbc.co.uk/news/1.303.03507/apple-touch-icon-114x114-precomposed.png">\n<link rel="apple-touch-icon-precomposed" sizes="144x144" href="https://static.bbc.co.uk/news/1.303.03507/apple-touch-icon.png">\n<link rel="apple-touch-icon" href="https://static.bbc.co.uk/news/1.303.03507/apple-touch-icon.png">\n<link rel="apple-touch-startup-image" href="https://static.bbc.co.uk/news/1.303.03507/web-app-launch-icon.png">\n<meta name="application-name" content="BBC News">\n<meta name="msapplication-TileImage" content="BBC News">\n<meta name="msapplication-TileColor" content="#bb1919">\n<meta name="mobile-web-app-capable" content="yes">\n <meta http-equiv="cleartype" content="on">\n <meta name="robots" content="NOODP NOYDIR" />\n <meta name="theme-color" content="#bb1919">\n <script type="text/javascript">var _sf_startpt=(new Date()).getTime()</script>\n <script>\n (function() {\n if (navigator.userAgent.match(/IEMobile\\/10\\.0/)) {\n var msViewportStyle = document.createElement("style");\n msViewportStyle.appendChild(\n document.createTextNode("@-ms-viewport{width:auto!important}")\n );\n document.getElementsByTagName("head")[0].appendChild(msViewportStyle);\n }\n })();\n </script>\n \n <script>window.fig = window.fig || {}; window.fig.async = true;</script>\n <meta property="fb:app_id" content="1609039196070050" />\n <script type="text/javascript">window.bbcredirection={geo:true}</script>\n<!-- Environment: live -->\n<!-- Orbit: 3.0.0-780.5d50e4a1 -->\n<!-- Analytics Web Module: 0.0.2-398.6553dba -->\n<!-- NavID Web Module: 0.2.0-92.e536e2f -->\n<!-- Detectview Web Module: 0.0.2-398.6553dba -->\n<!-- Searchbox Web Module: 3.0.0-49.3719992 -->\n<!-- Promo Web Module: 3.0.0-70.cc3da46 -->\n<meta name="viewport" content="width=device-width initial-scale=1.0"><meta property="fb:admins" content="100004154058350"><link rel="stylesheet" href="https://nav.files.bbci.co.uk/orbit/a07e26191aed6a8725358c88df999791/css/orb-ltr.min.css"><!--[if (lt IE 9) & (!IEMobile)]>\n <link rel="stylesheet" href="https://nav.files.bbci.co.uk/orbit/a07e26191aed6a8725358c88df999791/css/orb-ie-ltr.min.css">\n <![endif]--><script type="text/javascript">/*<![CDATA[*/\n window.orb = {\n lang: \'en\' \n bbcBaseUrl: \'https://www.bbc.co.uk\' \n bbcUrlPrefix: \'https://www.\' \n staticHost: \'https://nav.files.bbci.co.uk/orbit/a07e26191aed6a8725358c88df999791\' \n figUrl: \'https://fig.bbc.co.uk/frameworks/fig/2/fig.js\' \n partialCookieOvenUrl: \'https://cookie-oven.api.bbc\'\n };\n document.documentElement.className += (document.documentElement.className? \' \' : \'\') + \'orb-js\';\n window.orb.worldwideNavlinks = \'<li class="orb-nav-homedotcom"><a href="https://www.bbc.com/">Home</a></li><li class="orb-nav-newsdotcom"><a href="https://www.bbc.com/news">News</a></li><li class="orb-nav-sport"><a href="https://www.bbc.com/sport">Sport</a></li><li class="orb-nav-reeldotcom"><a href="https://www.bbc.com/reel">Reel</a></li><li class="orb-nav-worklife"><a href="https://www.bbc.com/worklife">Worklife</a></li><li class="orb-nav-traveldotcom"><a href="https://www.bbc.com/travel">Travel</a></li><li class="orb-nav-future"><a href="https://www.bbc.com/future">Future</a></li><li class="orb-nav-culture"><a href="https://www.bbc.com/culture">Culture</a></li><li class="orb-nav-music"><a href="https://www.bbc.com/culture/music">Music</a></li><li class="orb-nav-tv"><a href="https://www.bbc.co.uk/schedules/p00fzl9m">TV</a></li><li class="orb-nav-weather"><a href="https://www.bbc.com/weather">Weather</a></li><li class="orb-nav-sounds"><a href="https://www.bbc.co.uk/sounds">Sounds</a></li>\';\n /*]]>*/</script><script>// Promise polyfill from https://github.com/bramstein/promis\n (function(){\'use strict\';var f g=[];function l(a){g.push(a);1==g.length&&f()}function m(){for(;g.length;)g[0]() g.shift()}f=function(){setTimeout(m)};function n(a){this.a=p;this.b=void 0;this.f=[];var b=this;try{a(function(a){q(b a)} function(a){r(b a)})}catch(c){r(b c)}}var p=2;function t(a){return new n(function(b c){c(a)})}function u(a){return new n(function(b){b(a)})}function q(a b){if(a.a==p){if(b==a)throw new TypeError;var c=!1;try{var d=b&&b.then;if(null!=b&&"object"==typeof b&&"function"==typeof d){d.call(b function(b){c||q(a b);c=!0} function(b){c||r(a b);c=!0});return}}catch(e){c||r(a e);return}a.a=0;a.b=b;v(a)}} function r(a b){if(a.a==p){if(b==a)throw new TypeError;a.a=1;a.b=b;v(a)}}function v(a){l(function(){if(a.a!=p)for(;a.f.length;){var b=a.f.shift() c=b[0] d=b[1] e=b[2] b=b[3];try{0==a.a?"function"==typeof c?e(c.call(void 0 a.b)):e(a.b):1==a.a&&("function"==typeof d?e(d.call(void 0 a.b)):b(a.b))}catch(h){b(h)}}})}n.prototype.g=function(a){return this.c(void 0 a)};n.prototype.c=function(a b){var c=this;return new n(function(d e){c.f.push([a b d e]);v(c)})}; function w(a){return new n(function(b c){function d(c){return function(d){h[c]=d;e+=1;e==a.length&&b(h)}}var e=0 h=[];0==a.length&&b(h);for(var k=0;k<a.length;k+=1)u(a[k]).c(d(k) c)})}function x(a){return new n(function(b c){for(var d=0;d<a.length;d+=1)u(a[d]).c(b c)})};window.Promise||(window.Promise=n window.Promise.resolve=u window.Promise.reject=t window.Promise.race=x window.Promise.all=w window.Promise.prototype.then=n.prototype.c window.Promise.prototype["catch"]=n.prototype.g);}());\n \n \n // Polyfill Event constructor for IE ref: https://jira.dev.bbc.co.uk/browse/ORBITEN-919\n // see: https://stackoverflow.com/questions/26596123\n (function () {\n if (typeof window.CustomEvent === "function") {\n return false;\n }\n function CustomEvent(event params) {\n params = params || { bubbles: false cancelable: false detail: undefined };\n var evt = document.createEvent(\'CustomEvent\');\n evt.initCustomEvent(event params.bubbles params.cancelable params.detail);\n return evt;\n }\n CustomEvent.prototype = window.Event.prototype;\n window.Event = CustomEvent;\n })();\n \n \n //Element.prototype.matches polyfill\n //from https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\n if (!Element.prototype.matches) {\n Element.prototype.matches = Element.prototype.msMatchesSelector ||\n Element.prototype.webkitMatchesSelector;\n }\n //NodeList.forEach Polyfill\n //from https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach#Polyfill\n if (window.NodeList && !NodeList.prototype.forEach) {\n NodeList.prototype.forEach = Array.prototype.forEach;\n }\n \n // Object.assign polyfill from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill\n if (typeof Object.assign != \'function\') {\n // Must be writable: true enumerable: false configurable: true\n Object.defineProperty(Object "assign" {\n value: function assign(target varArgs) { // .length of function is 2\n \'use strict\';\n if (target == null) { // TypeError if undefined or null\n throw new TypeError(\'Cannot convert undefined or null to object\');\n }\n \n var to = Object(target);\n \n for (var index = 1; index < arguments.length; index++) {\n var nextSource = arguments[index];\n \n if (nextSource != null) { // Skip over if undefined or null\n for (var nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n } \n writable: true \n configurable: true\n });\n }\n \n // window.fetch polyfill https://github.com/github/fetch/blob/v0.11.0/fetch.js - chosen for IE9 compatibility\n if(typeof window.fetch !== \'function\') {\n (function(self){"use strict";if(self.fetch){return}function normalizeName(name){if(typeof name!=="string"){name=String(name)}if(/[^a-z0-9\\-#$%&\'*+.\\^_`|~]/i.test(name)){throw new TypeError("Invalid character in header field name")}return name.toLowerCase()}function normalizeValue(value){if(typeof value!=="string"){value=String(value)}return value}function Headers(headers){this.map={};if(headers instanceof Headers){headers.forEach(function(value name){this.append(name value)} this)}else if(headers){Object.getOwnPropertyNames(headers).forEach(function(name){this.append(name headers[name])} this)}}Headers.prototype.append=function(name value){name=normalizeName(name);value=normalizeValue(value);var list=this.map[name];if(!list){list=[];this.map[name]=list}list.push(value)};Headers.prototype["delete"]=function(name){delete this.map[normalizeName(name)]};Headers.prototype.get=function(name){var values=this.map[normalizeName(name)];return values?values[0]:null};Headers.prototype.getAll=function(name){return this.map[normalizeName(name)]||[]};Headers.prototype.has=function(name){return this.map.hasOwnProperty(normalizeName(name))};Headers.prototype.set=function(name value){this.map[normalizeName(name)]=[normalizeValue(value)]};Headers.prototype.forEach=function(callback thisArg){Object.getOwnPropertyNames(this.map).forEach(function(name){this.map[name].forEach(function(value){callback.call(thisArg value name this)} this)} this)};function consumed(body){if(body.bodyUsed){return Promise.reject(new TypeError("Already read"))}body.bodyUsed=true}function fileReaderReady(reader){return new Promise(function(resolve reject){reader.onload=function(){resolve(reader.result)};reader.onerror=function(){reject(reader.error)}})}function readBlobAsArrayBuffer(blob){var reader=new FileReader;reader.readAsArrayBuffer(blob);return fileReaderReady(reader)}function readBlobAsText(blob){var reader=new FileReader;reader.readAsText(blob);return fileReaderReady(reader)}var support={blob:"FileReader"in self&&"Blob"in self&&function(){try{new Blob;return true}catch(e){return false}}() formData:"FormData"in self arrayBuffer:"ArrayBuffer"in self};function Body(){this.bodyUsed=false;this._initBody=function(body){this._bodyInit=body;if(typeof body==="string"){this._bodyText=body}else if(support.blob&&Blob.prototype.isPrototypeOf(body)){this._bodyBlob=body}else if(support.formData&&FormData.prototype.isPrototypeOf(body)){this._bodyFormData=body}else if(!body){this._bodyText=""}else if(support.arrayBuffer&&ArrayBuffer.prototype.isPrototypeOf(body)){}else{throw new Error("unsupported BodyInit type")}if(!this.headers.get("content-type")){if(typeof body==="string"){this.headers.set("content-type" "text/plain;charset=UTF-8")}else if(this._bodyBlob&&this._bodyBlob.type){this.headers.set("content-type" this._bodyBlob.type)}}};if(support.blob){this.blob=function(){var rejected=consumed(this);if(rejected){return rejected}if(this._bodyBlob){return Promise.resolve(this._bodyBlob)}else if(this._bodyFormData){throw new Error("could not read FormData body as blob")}else{return Promise.resolve(new Blob([this._bodyText]))}};this.arrayBuffer=function(){return this.blob().then(readBlobAsArrayBuffer)};this.text=function(){var rejected=consumed(this);if(rejected){return rejected}if(this._bodyBlob){return readBlobAsText(this._bodyBlob)}else if(this._bodyFormData){throw new Error("could not read FormData body as text")}else{return Promise.resolve(this._bodyText)}}}else{this.text=function(){var rejected=consumed(this);return rejected?rejected:Promise.resolve(this._bodyText)}}if(support.formData){this.formData=function(){return this.text().then(decode)}}this.json=function(){return this.text().then(JSON.parse)};return this}var methods=["DELETE" "GET" "HEAD" "OPTIONS" "POST" "PUT"];function normalizeMethod(method){var upcased=method.toUpperCase();return methods.indexOf(upcased)>-1?upcased:method}function Request(input options){options=options||{};var body=options.body;if(Request.prototype.isPrototypeOf(input)){if(input.bodyUsed){throw new TypeError("Already read")}this.url=input.url;this.credentials=input.credentials;if(!options.headers){this.headers=new Headers(input.headers)}this.method=input.method;this.mode=input.mode;if(!body){body=input._bodyInit;input.bodyUsed=true}}else{this.url=input}this.credentials=options.credentials||this.credentials||"omit";if(options.headers||!this.headers){this.headers=new Headers(options.headers)}this.method=normalizeMethod(options.method||this.method||"GET");this.mode=options.mode||this.mode||null;this.referrer=null;if((this.method==="GET"||this.method==="HEAD")&&body){throw new TypeError("Body not allowed for GET or HEAD requests")}this._initBody(body)}Request.prototype.clone=function(){return new Request(this)};function decode(body){var form=new FormData;body.trim().split("&").forEach(function(bytes){if(bytes){var split=bytes.split("=");var name=split.shift().replace(/\\+/g " ");var value=split.join("=").replace(/\\+/g " ");form.append(decodeURIComponent(name) decodeURIComponent(value))}});return form}function headers(xhr){var head=new Headers;var pairs=xhr.getAllResponseHeaders().trim().split("\\n");pairs.forEach(function(header){var split=header.trim().split(":");var key=split.shift().trim();var value=split.join(":").trim();head.append(key value)});return head}Body.call(Request.prototype);function Response(bodyInit options){if(!options){options={}}this.type="default";this.status=options.status;this.ok=this.status>=200&&this.status<300;this.statusText=options.statusText;this.headers=options.headers instanceof Headers?options.headers:new Headers(options.headers);this.url=options.url||"";this._initBody(bodyInit)}Body.call(Response.prototype);Response.prototype.clone=function(){return new Response(this._bodyInit {status:this.status statusText:this.statusText headers:new Headers(this.headers) url:this.url})};Response.error=function(){var response=new Response(null {status:0 statusText:""});response.type="error";return response};var redirectStatuses=[301 302 303 307 308];Response.redirect=function(url status){if(redirectStatuses.indexOf(status)===-1){throw new RangeError("Invalid status code")}return new Response(null {status:status headers:{location:url}})};self.Headers=Headers;self.Request=Request;self.Response=Response;self.fetch=function(input init){return new Promise(function(resolve reject){var request;if(Request.prototype.isPrototypeOf(input)&&!init){request=input}else{request=new Request(input init)}var xhr=new XMLHttpRequest;function responseURL(){if("responseURL"in xhr){return xhr.responseURL}if(/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())){return xhr.getResponseHeader("X-Request-URL")}return}xhr.onload=function(){var status=xhr.status===1223?204:xhr.status;if(status<100||status>599){reject(new TypeError("Network request failed"));return}var options={status:status statusText:xhr.statusText headers:headers(xhr) url:responseURL()};var body="response"in xhr?xhr.response:xhr.responseText;resolve(new Response(body options))};xhr.onerror=function(){reject(new TypeError("Network request failed"))};xhr.open(request.method request.url true);if(request.credentials==="include"){xhr.withCredentials=true}if("responseType"in xhr&&support.blob){xhr.responseType="blob"}request.headers.forEach(function(value name){xhr.setRequestHeader(name value)});xhr.send(typeof request._bodyInit==="undefined"?null:request._bodyInit)})};self.fetch.polyfill=true})(typeof self!=="undefined"?self:this);\n }\n \n if (typeof window.CustomEvent !== \'function\') {\n \n function CustomEvent(event params) {\n params = params || { bubbles: false cancelable: false detail: null };\n var evt = document.createEvent(\'CustomEvent\');\n evt.initCustomEvent(event params.bubbles params.cancelable params.detail);\n return evt;\n }\n \n CustomEvent.prototype = window.Event.prototype;\n \n window.CustomEvent = CustomEvent;\n \n }\n \n (function() {\n \n var language = \'en\';\n language = \'en\';\n \n var modal = false;\n \n \n var istatsLabels = {name: \'news.technology.story.26415021.page\' || undefined};\n istatsLabels[\'pal_route\'] = \'asset\';\n istatsLabels[\'language\'] = \'en-GB\';\n istatsLabels[\'pal_webapp\'] = \'tabloid\';\n istatsLabels[\'prod_name\'] = \'news\';\n istatsLabels[\'app_name\'] = \'news\';\n istatsLabels[\'cps_asset_id\'] = \'26415021\';\n istatsLabels[\'page_type\'] = \'Story\';\n istatsLabels[\'section\'] = \'%2Fnews%2Ftechnology\';\n istatsLabels[\'first_pub\'] = \'2014-03-03T07%3A36%3A59%2B00%3A00\';\n istatsLabels[\'last_editorial_update\'] = \'2014-03-03T10%3A22%3A55%2B00%3A00\';\n istatsLabels[\'curie\'] = \'52db3466-0acb-3a48-98c6-21a6e4f5f1cf\';\n istatsLabels[\'title\'] = \'An+hour+to+catch+the+coding+bug\';\n istatsLabels[\'has_video\'] = \'\';\n istatsLabels[\'topic_names\'] = \'\';\n istatsLabels[\'topic_ids\'] = \'\';\n istatsLabels[\'for_nation\'] = \'il\';\n istatsLabels[\'app_version\'] = \'1.303.0\';\n istatsLabels[\'app_type\'] = \'responsive\';\n istatsLabels[\'bbc_site\'] = \'news\';\n \n function getMetaValue(propertyName) {\n var metaTag = document.querySelector(\n "meta[property=\'" + propertyName + "\'] " +\n "meta[name=\'" + propertyName + "\']");\n if (metaTag) {\n return metaTag.getAttribute("content");\n } else {\n throw new Error(\'No meta tag called: \' + propertyName)\n }\n }\n \n function generateCountername() {\n var pathName = window.location.pathname\n .replace(/\\/$/ "")\n .replace(/^\\// "")\n .replace(/\\//g \'.\');\n return pathName + \'.page\';\n }\n \n var additionalPageProperties = {};\n additionalPageProperties[\'content_language\'] = \'en-gb\';\n additionalPageProperties[\'custom_var_1\'] = \'2014-03-03T10:22:55+00:00\';\n additionalPageProperties[\'custom_var_2\'] = \'2014-03-03T10:22:55+00:00\';\n additionalPageProperties[\'app_name\'] = \'news\';\n \n var page = {\n name: \'news.technology.story.26415021.page\' || istatsLabels.name || generateCountername() \n destination: \'NEWS_GNL\' || null \n producer: \'NEWS\' || null \n section: \'technology\' || null \n site: \'\' || istatsLabels.bbc_site || istatsLabels.app_name || istatsLabels.prod_name || null \n contentId: \'urn:bbc:cps:52db3466-0acb-3a48-98c6-21a6e4f5f1cf\' || null \n contentType: \'article\' || null \n edition: \'\' || null \n additionalProperties: additionalPageProperties\n };\n \n function updatePageData(newData) {\n page = Object.assign(page newData);\n }\n \n document.addEventListener(\'bbc-page-reset\' function(event) {\n if (event.detail && event.detail.page) {\n updatePageData(event.detail.page);\n }\n document.dispatchEvent(new Event(\'bbc-page-updated\'));\n });\n \n window.bbcpage = {\n loadModule: function(deps) {\n return new Promise(function (resolve reject) {\n window.require(deps function () {\n resolve.apply(this arguments);\n } \n function (error) {\n reject(error);\n });\n })\n } \n loadCSS: function (url timeout) {\n return window.bbcpage.loadModule([\'orb/lib/_$\'])\n .then(function($) {\n return new Promise(function(resolve reject) {\n var stylesheet = loadCSS(url);\n $.onloadCSS(stylesheet function() {\n resolve();\n });\n if (timeout) {\n setTimeout(function () { reject(); } timeout);\n }\n });\n });\n } \n isModal: function () {\n return modal;\n } \n getLanguage: function () {\n return new Promise(function(resolve reject) {\n resolve(language);\n });\n } \n trackRegion: function (region labels) {\n return window.bbcpage.loadModule([\'istats-1\'])\n .then(function(istats) {\n \n var trackLabels = {\n region: region\n };\n \n for (var label in labels) {\n trackLabels[label] = labels[label];\n }\n \n var linkType = labels.linkType || \'internal\';\n \n istats.track(linkType trackLabels);\n });\n } \n getName: function() {\n return Promise.resolve(page.name);\n } \n getDestination: function() {\n return Promise.resolve(page.destination);\n } \n getProducer: function() {\n return Promise.resolve(page.producer);\n } \n getSite: function() {\n return Promise.resolve(page.site);\n } \n getSection: function() {\n return Promise.resolve(page.section);\n } \n getContentType: function() {\n return Promise.resolve(page.contentType);\n } \n getContentId: function() {\n return Promise.resolve(page.contentId);\n } \n getEdition: function() {\n return new Promise(function (resolve reject) {\n if (page.edition) {\n resolve(page.edition);\n return;\n }\n try {\n resolve(getMetaValue(\'x-audience\').toLowerCase());\n } catch (err){\n // This property is related to Chartbeat; see http://support.chartbeat.com/docs/\n if (window._sf_async_config) {\n resolve(window._sf_async_config.region || null);\n }\n }\n resolve(null);\n });\n } \n getReferrer: function() {\n return Promise.resolve(window.orb && window.orb.referrer !== null && window.orb.referrer !== undefined ? window.orb.referrer : document.referrer);\n } \n getAdditionalProperties: function() {\n return Promise.resolve(page.additionalProperties);\n }\n };\n \n var USERINFO_URL = "";\n var USERINFO_PREFIX = "www." || "www.";\n \n function initUserCache(orbitUser) {\n var availableAttr = [\n \'X-Country\' \n \'X-Ip_is_advertise_combined\' \n \'X-Ip_is_uk_combined\'\n ];\n var userCache = availableAttr.reduce(function(user curr i) {\n if (!orbitUser[curr]) {\n return user;\n }\n var res = Object.assign({} user);\n res[curr] = orbitUser[curr];\n return res;\n } {});\n if (Object.keys(userCache).length !== availableAttr.length) {\n userCache._partial = true;\n }\n return userCache;\n }\n \n var user = initUserCache({\n });\n \n function checkStatus(response) {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n var error = new Error(response.statusText);\n error.response = response;\n throw error;\n }\n }\n \n function parseJSON(response) {\n return response.json();\n }\n \n var supportsCors = function() {\n return typeof XMLHttpRequest !== \'undefined\' &&\n \'withCredentials\' in new XMLHttpRequest();\n };\n \n var getUserInfoFallback = function() {\n return window.bbcpage.loadModule([\'orb/fig\'])\n .then(function(orbFig) {\n return new Promise(function(resolve reject) {\n orbFig.load(function(fig) {\n var getCountryFallback = function() {\n if (fig.geo.isUK()) {\n return \'GB\';\n } else if (fig.geo.isEU()) {\n return \'EU\';\n }\n };\n resolve({\n \'X-Country\': user.country || getCountryFallback() \n \'X-Ip_is_uk_combined\': fig().uk ? \'yes\' : \'no\' \n \'X-Ip_is_advertise_combined\': fig().ad ? \'yes\' : \'no\'\n });\n } function () {\n reject(\'Error determining country. Timeout?\');\n });\n });\n });\n };\n \n var _userInfoRequest;\n var getUserInfo = function() {\n \n var host = window.location.host.toString().match(/bbc\\.com$/) ? \'bbc.com\' : \'bbc.co.uk\';\n var userInfoUrl = USERINFO_URL || window.location.protocol + "//" + USERINFO_PREFIX + host + \'/userinfo\';\n \n if (!user._partial) {\n return Promise.resolve(user);\n }\n \n if (!_userInfoRequest) {\n if (typeof window.fetch === \'undefined\' || !supportsCors()) {\n _userInfoRequest = getUserInfoFallback();\n } else {\n _userInfoRequest = window.fetch(userInfoUrl { credentials: \'same-origin\' })\n .then(checkStatus)\n .then(parseJSON)\n .then(function(userInfo) {\n user = userInfo;\n return user;\n });\n }\n }\n \n return _userInfoRequest;\n };\n \n window.bbcuser = {\n getHashedId: function() {\n return window.bbcpage.loadModule([\'idcta-v2/idcta-1\'])\n .then(function(idcta) {\n return idcta.getCookieInstance().getHidFromCookie();\n });\n } \n \n getCountry: function() {\n if (user[\'X-Country\']) {\n return Promise.resolve(user[\'X-Country\']);\n }\n return getUserInfo().then(function(userInfo) {\n return userInfo[\'X-Country\'] || \'GB\';\n });\n } \n \n isUKCombined: function() {\n return getUserInfo().then(function(userInfo) {\n if (!userInfo[\'X-Ip_is_uk_combined\']) {\n throw new Error(\'missing isUKCombined from userinfo response\');\n }\n return userInfo[\'X-Ip_is_uk_combined\'].toLowerCase() === \'yes\';\n })\n } \n \n canSeeAdverts: function() {\n return getUserInfo().then(function(userInfo) {\n if (!userInfo[\'X-Ip_is_advertise_combined\']) {\n throw new Error(\'missing canSeeAdverts from userinfo response\');\n }\n return userInfo[\'X-Ip_is_advertise_combined\'].toLowerCase() === "yes";\n });\n } \n \n isSignedIn: function() {\n return window.bbcpage.loadModule([\'idcta-v2/idcta-1\'])\n .then(function(idcta) {\n return (idcta && idcta.getCookieInstance().hasCookie());\n });\n } \n allowsPerformanceCookies: function() {\n return window.bbcpage.loadModule([\'orb/cookies\'])\n .then(function(bbccookies) {\n return !!bbccookies.cookiesEnabled() && !!bbccookies.readPolicy(\'performance\');\n });\n } \n allowsFunctionalCookies: function() {\n return window.bbcpage.loadModule([\'orb/cookies\'])\n .then(function(bbccookies) {\n return !!bbccookies.cookiesEnabled() && !!bbccookies.readPolicy(\'personalisation\');\n });\n } \n getCookieValue: function(cookieName) {\n return window.bbcpage.loadModule([\'orb/cookies\'])\n .then(function(bbccookies) {\n return bbccookies.get(cookieName);\n });\n } \n resetCookiesPreferences: function() {\n return window.bbcpage.loadModule([\'orb/cookies\'])\n .then(function(bbccookies) {\n bbccookies.setDefaultCookiesSingleDomain();\n });\n } \n hasCookiesEnabled: function() {\n return window.bbcpage.loadModule([\'orb/cookies\'])\n .then(function(bbccookies) {\n return !!bbccookies.cookiesEnabled();\n });\n } \n hasSeenCookieBanner: function() {\n return window.bbcpage.loadModule([\'orb/cookies\'])\n .then(function (bbccookies) {\n return !!bbccookies.isCookiePolicySet();\n });\n } \n logEvent: function (verb noun extraLabels) {\n return window.bbcuser.hasCookiesEnabled()\n .then(function(allowsCookies) {\n if (allowsCookies) {\n return window.bbcpage.loadModule([\'istats-1\'])\n .then(function(istats) {\n istats.log(verb noun extraLabels);\n });\n } else {\n throw new Error(\'User cannot be tracked due to cookies preferences.\');\n }\n });\n } \n };\n \n }());</script><script src="https://nav.files.bbci.co.uk/orbit/a07e26191aed6a8725358c88df999791/js/require.min.js"></script> <script src="https://nav.files.bbci.co.uk/orbit-webmodules/0.0.2-398.6553dba/cookie-banner/cookie-library.min.js"></script><script type="text/javascript">if (window.define !== undefined) {\n define(\'orb/cookies\' function() {\n return window.bbccookies;\n });\n }</script> <script src="https://nav.files.bbci.co.uk/orbit/a07e26191aed6a8725358c88df999791/js/api.min.js"></script><script type="text/javascript">window.bbcFlagpoles_istats="ON" require.config({paths:{"istats-1":"https://nav.files.bbci.co.uk/orbit-webmodules/0.0.2-398.6553dba/istats/istats-1"}}) require(["istats-1" "orb/cookies"] function(a t){if(t.isAllowed("s1")){var e=(o=document.location.href.match(/^(?:https|http):\\/\\/\\w*\\.(?:(int|test|stage|live|)\\.)?bbc\\.(?:co\\.uk|com)/))?void 0===o[1]||""===o[1]||"live"===o[1]?"//sa.bbc.co.uk/bbc/bbc/s":"//sa.bbc.co.uk/bbc/"+o[1]+"/s":"//sa.bbc.co.uk/bbc/test/s";a.addCollector({name:"default" url:e separator:"&"});var s="news.technology.story.26415021.page";a.setCountername(s) window.istats_countername&&a.setCountername(window.istats_countername) a.addLabels("ml_name=webmodule&ml_version=0.0.2-398.6553dba&blq_e=orbit&blq_r=orbit&blq_s=orbit&blq_v=default&language=en&pal_route=asset&language=en-GB&pal_webapp=tabloid&prod_name=news&app_name=news&cps_asset_id=26415021&page_type=Story&section=%2Fnews%2Ftechnology&first_pub=2014-03-03T07%3A36%3A59%2B00%3A00&last_editorial_update=2014-03-03T10%3A22%3A55%2B00%3A00&curie=52db3466-0acb-3a48-98c6-21a6e4f5f1cf&title=An+hour+to+catch+the+coding+bug&has_video=&topic_names=&topic_ids=&for_nation=il&app_version=1.303.0&app_type=responsive&bbc_site=news")}var o});</script><link rel="stylesheet" href="https://mybbc.files.bbci.co.uk/s/id/account-idcta/1.23.4/style/id-cta.css"><!--[if IE 8]><link href="https://mybbc.files.bbci.co.uk/s/id/account-idcta/1.23.4/style/ie8.css" rel="stylesheet"/> <![endif]--><script type="text/javascript">(function() {if (!window.require) {throw new Error(\'idcta: could not find require module\');}if (typeof(map) == \'undefined\') {var map = {};}if (!!document.createElementNS && !!document.createElementNS(\'http://www.w3.org/2000/svg\' \'svg\').createSVGRect) {document.documentElement.className += \' id-svg\';}var ptrt = new RegExp("[\\\\?&]ptrt=([^&]*)").exec(document.location.href);var ENDPOINT_URL = \'https://idcta.api.bbc.co.uk\';var ENDPOINT_CONFIG = (\'/idcta/config?callback=&ptrt=\' + encodeURIComponent((ptrt ? ptrt[1] : document.location.href))).replace(/\\&amp;/g \'&\');var ENDPOINT_TRANSLATIONS = \'/idcta/translations?callback=\';function hasPromise() {var P = window.Promise;var promiseToString = null;if (P) {try {promiseToString = Object.prototype.toString.call(P.resolve());} catch(e) {/*silently ignored*/}}return (promiseToString === \'[object Promise]\' && !P.cast);}if (hasPromise()) {define(\'idcta/es6-promise\' function() {return window.Promise;});define(\'idcta-v2/es6-promise\' function() {return window.Promise;});}map[\'idcta-v2\'] = \'https://mybbc.files.bbci.co.uk/s/id/account-idcta/1.23.4/modules/idcta-v2\';map[\'idcta-v2/config\'] = ENDPOINT_URL + ENDPOINT_CONFIG;map[\'idcta-v2/translations\'] = ENDPOINT_URL + ENDPOINT_TRANSLATIONS;map[\'idcta\'] = \'https://mybbc.files.bbci.co.uk/s/id/account-idcta/1.8.2/modules/idcta\';map[\'idcta-v2/idcta-1\'] = \'https://mybbc.files.bbci.co.uk/s/id/account-idcta/1.23.4/modules/idcta-v2/dist/idcta-1.min\';const idctaShim = {deps: [\'idcta-v2/idcta-1\'] };require({shim: {\'idcta-v2/statusbar\': idctaShim \'idcta-v2/id-config\': idctaShim} map: {\'*\': {\'idcta/idcta-1\': \'idcta-v2/idcta-1\' \'idcta\': \'idcta-v2\' }} paths: map});window.idctaBaseUrl = ENDPOINT_URL;define(\'idcta/config\' [\'idcta-v2/config\'] function(data) {return data;});define(\'idcta/translations\' [\'idcta-v2/translations\'] function(data) {return data;});})();</script> <!-- BBCDOTCOM head --><script type="text/javascript">/*<![CDATA[*/ var _sf_startpt = (new Date()).getTime(); /*]]>*/</script><style type="text/css">.bbccom_display_none{display:none;}</style><script type="text/javascript">/*<![CDATA[*/ var bbcdotcomConfig googletag = googletag || {}; googletag.cmd = googletag.cmd || [] bbcdotcomScripts = [] tp = window.tp || []; var bbcdotcom = false; (function(){ if(typeof require !== \'undefined\') { require({ paths:{ "bbcdotcom":"https://static.bbc.co.uk/bbcdotcom/3.3.0/script" } }); } })(); /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ var bbcdotcom = { adverts: { keyValues: { set: function() {} } } advert: { write: function () {} show: function () {} isActive: function () { return false; } layout: function() { return { reset: function() {} } } } config: { init: function() {} isActive: function() {} setSections: function() {} isAdsEnabled: function() {} setAdsEnabled: function() {} isAnalyticsEnabled: function() {} setAnalyticsEnabled: function() {} setAssetPrefix: function() {} setFlagpoles: function() {} setVersion: function () {} setJsPrefix: function() {} setSwfPrefix: function() {} setCssPrefix: function() {} setConfig: function() {} getAssetPrefix: function() {} getJsPrefix: function () {} getSwfPrefix: function () {} getCssPrefix: function () {} isOptimizelyEnabled: function() {} } survey: { init: function(){ return false; } } data: {} init: function() {} objects: function(str) { return false; } locale: { set: function() {} get: function() {} } setAdKeyValue: function() {} utils: { addEvent: function() {} addHtmlTagClass: function() {} log: function () {} } addLoadEvent: function() {} }; /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ (function(){ if (typeof orb !== \'undefined\' && typeof orb.fig === \'function\') { if (orb.fig(\'ad\') && orb.fig(\'uk\') == 0) { bbcdotcom.data = { ads: (orb.fig(\'ad\') ? 1 : 0) stats: (orb.fig(\'uk\') == 0 ? 1 : 0) statsProvider: orb.fig(\'ap\') }; } } else { document.write(\'<script type="text/javascript" src="https://www.bbc.com/wwscripts/data">\\x3C/script>\'); } })(); /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ (function(){ if (typeof orb === \'undefined\' || typeof orb.fig !== \'function\') { bbcdotcom.data = { ads: bbcdotcom.data.a stats: bbcdotcom.data.b statsProvider: bbcdotcom.data.c }; } if (bbcdotcom.data.ads == 1) { document.write(\'<script type="text/javascript" src="https://www.bbc.com/wwscripts/flag">\\x3C/script>\'); } })(); /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ (function(){ if (window.bbcdotcom && (typeof bbcdotcom.flag == \'undefined\' || (typeof bbcdotcom.data.ads !== \'undefined\' && bbcdotcom.flag.a != 1))) { bbcdotcom.data.ads = 0; } if (/[?|&]ads/.test(window.location.href) || /(^|; )ads=on; /.test(document.cookie) || /; ads=on(; |$)/.test(document.cookie)) { bbcdotcom.data.ads = 1; bbcdotcom.data.stats = 1; } if (window.bbcdotcom && (bbcdotcom.data.ads == 1 || bbcdotcom.data.stats == 1)) { bbcdotcom.assetPrefix = "https://static.bbc.co.uk/bbcdotcom/3.3.0/"; if (/(sandbox|int)(.dev)*.bbc.co*/.test(window.location.href) || /[?|&]ads-debug/.test(window.location.href) || document.cookie.indexOf(\'ads-debug=\') !== -1) { document.write(\'<script type="text/javascript" src="https://static.bbc.co.uk/bbcdotcom/3.3.0/script/dist/bbcdotcom.dev.js">\\x3C/script>\'); } else { document.write(\'<script type="text/javascript" src="https://static.bbc.co.uk/bbcdotcom/3.3.0/script/dist/bbcdotcom.js">\\x3C/script>\'); } } })(); /*]]>*/</script><script type="text/javascript">if (window.bbcdotcom && bbcdotcom.data.stats == 1) { document.write(\'<link rel="dns-prefetch" href="//secure-us.imrworldwide.com/">\'); document.write(\'<link rel="dns-prefetch" href="//me-cdn.effectivemeasure.net/">\'); document.write(\'<link rel="dns-prefetch" href="//ssc.api.bbc.com/">\'); } if (window.bbcdotcom && bbcdotcom.data.ads == 1) { document.write(\'<link rel="dns-prefetch" href="//www.googletagservices.com/">\'); document.write(\'<link rel="dns-prefetch" href="//bbc.gscontxt.net/">\'); document.write(\'<link rel="dns-prefetch" href="//tags.crwdcntrl.net/">\'); document.write(\'<link rel="dns-prefetch" href="//ad.crwdcntrl.net/">\'); }</script><script type="text/javascript">if (window.bbcdotcom && bbcdotcom.data.ads == 1) { document.write(\'<meta name="google-site-verification" content="auTeTTwSt_KBY_4iDoR00Lwb7-qzx1IgzJy6ztaWgEI" />\'); }</script><script type="text/javascript">/*<![CDATA[*/ (function(){ var GDPR_COUNTRIES = [\'AT\' \'BE\' \'BG\' \'HR\' \'CY\' \'CZ\' \'DK\' \'EE\' \'FI\' \'FR\' \'DE\' \'GR\' \'HU\' \'IE\' \'IT\' \'LV\' \'LT\' \'LU\' \'MT\' \'NL\' \'PL\' \'PT\' \'RO\' \'SK\' \'SI\' \'ES\' \'SE\' \'IS\' \'LI\' \'NO\' \'CH\']; if (window.bbcdotcom && (bbcdotcom.data.ads == 1 || bbcdotcom.data.stats == 1)) { bbcdotcomConfig = {"adFormat":"standard" "adKeyword":"" "adMode":"smart" "adsEnabled":true "appAnalyticsSections":"" "asyncEnabled":true "disableInitialLoad":false "advertInfoPageUrl":"https:\\/\\/www.bbc.com\\/privacy\\/cookies\\/international\\/" "advertisementText":"Advertisement" "analyticsEnabled":true "sherlockEnabled":false "appName":"" "assetPrefix":"https:\\/\\/static.bbc.co.uk\\/bbcdotcom\\/3.3.0\\/" "customAdParams":[] "customStatsParams":[] "headline":"" "id":"" "inAssociationWithText":"in association with" "keywords":"" "language":"" "orbTransitional":false "optimizelyEnabled":true "palEnv":"live" "productName":"" "sections":[] "comScoreEnabled":true "comscoreSite":"bbc" "comscoreID":"19293874" "comscorePageName":"" "slots":"" "sponsoredByText":"is sponsored by" "adsByGoogleText":"Ads by Google" "summary":"" "type":"" "features":{"testfeature":{"name":"testfeature" "envs":["sandbox" "int" "test"] "on":true "options":{} "override":null} "lxadverts":{"name":"lxadverts" "envs":[] "on":true "options":{} "override":null}} "staticBase":"\\/bbcdotcom" "staticHost":"https:\\/\\/static.bbc.co.uk" "staticVersion":"3.3.0" "staticPrefix":"https:\\/\\/static.bbc.co.uk\\/bbcdotcom\\/3.3.0" "dataHttp":"tps.bbc.com" "dataHttps":"www.bbc.com" "flagHttp":"www.bbc.co.uk" "flagHttps":"www.bbc.co.uk" "analyticsHttp":"sa.bbc.com" "analyticsHttps":"ssa.bbc.com"}; bbcdotcom.config.init(bbcdotcomConfig bbcdotcom.data window.location window.document); bbcdotcom.config.setFlagpoles(bbcdotcom.flag || {}); bbcdotcom.config.setAssetPrefix("https://static.bbc.co.uk/bbcdotcom/3.3.0/"); bbcdotcom.config.setVersion("3.3.0"); if (window.bbcuser && window.bbcuser.getCountry && typeof(window.bbcuser.getCountry) === \'function\') { window.bbcuser.getCountry().then(function(countryCode) { var isEU = countryCode ? GDPR_COUNTRIES.indexOf(countryCode.toUpperCase()) !== -1 : false; bbcdotcom.config.setEU(isEU); }); } else if (window.orb && window.orb.fig && typeof(window.orb.fig) === \'function\') { bbcdotcom.config.setEU(window.orb.fig(\'eu\')); } document.write(\'<!--[if IE 7]><script type="text/javascript">bbcdotcom.config.setIE7(true);\\x3C/script><![endif]-->\'); document.write(\'<!--[if IE 8]><script type="text/javascript">bbcdotcom.config.setIE8(true);\\x3C/script><![endif]-->\'); document.write(\'<!--[if IE 9]><script type="text/javascript">bbcdotcom.config.setIE9(true);\\x3C/script><![endif]-->\'); if (/[?|&]ex-dp/.test(window.location.href) || document.cookie.indexOf(\'ex-dp=\') !== -1) { bbcdotcom.utils.addHtmlTagClass(\'bbcdotcom-ex-dp\'); } } })(); /*]]>*/</script><script type="text/javascript">var initOptimizely = (function(isEnabled){ if(!isEnabled) return; var logger = window.bbcdotcom.Logger(\'bbcdotcom:head:optimizely\'); /* Allow Optimizely in these paths */ var allowPaths = [\'/\' \'/wwhp\']; /* Only run on optimizely on homepage */ if (bbcdotcom.utils && allowPaths.indexOf(window.location.pathname) !== -1){ /* set correct OptimizelyURL for prod or sandbox */ var optimizelyURL = "https://cdn.optimizely.com/public/4621041136/s/bbccom_sandbox.js"; if(window.location.hostname === \'www.bbc.com\') { optimizelyURL = "https://cdn.optimizely.com/public/4621041136/s/bbccom_prod.js"; } /* Set cookie to 1 year */ window[\'optimizely\'] = window[\'optimizely\'] || []; window[\'optimizely\'].push({ "type": "cookieExpiration" "cookieExpirationDays": 365 }); document.write(\'<script type="text/javascript" src="\'+optimizelyURL+\'">\\x3C/script>\'); } })( bbcdotcom.config.isOptimizelyEnabled() );</script><script type="text/javascript">/*<![CDATA[*/ if ( window.bbcdotcom && bbcdotcom.data && bbcdotcom.data.ads && bbcdotcom.data.ads == 1 && bbcdotcom.config && bbcdotcom.config.isGrapeshotEnabled && bbcdotcom.config.isGrapeshotEnabled() && bbcdotcom.config.isWorldService && !bbcdotcom.config.isWorldService() ) { var gs_channels="DEFAULT"; (function () { var gsurl = window.location.href.split("?")[0]; bbcdotcomScripts.push({src:\'https://bbc.gscontxt.net/?url=\'+encodeURIComponent(gsurl)}); })(); } /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ if (window.bbcdotcom && bbcdotcom.config && bbcdotcom.config.isLotameActive && bbcdotcom.config.isLotameActive()&& bbcdotcom.config.isLotameEnabled && bbcdotcom.config.isLotameEnabled()){ (function () { var clientId lotameUrl lotameAudienceUrl; clientId = (bbcdotcom.config.isWorldService && bbcdotcom.config.isWorldService()) ? \'10826\' : \'10816\'; lotameUrl = \'https://tags.crwdcntrl.net/c/\'+clientId+\'/cc.js?ns=\'+clientId; lotameAudienceUrl = \'https://ad.crwdcntrl.net/5/c=10815/pe=y/var=ccauds\'; bbcdotcomScripts.push({src:lotameUrl id:"LOTCC"+clientId}); bbcdotcomScripts.push({src:lotameAudienceUrl}); })(); } /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ /** * ASYNC waits to make any gpt requests until the bottom of the page */ if ( window.bbcdotcom && bbcdotcom.data && bbcdotcom.data.ads && bbcdotcom.data.ads == 1 && bbcdotcom.config && bbcdotcom.config.isAsync && bbcdotcom.config.isAsync() ) { (function () { bbcdotcomScripts.push({src:\'https://securepubads.g.doubleclick.net/tag/js/gpt.js\'}); })(); } /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ /* Load Lotame Grapeshot and GPT without blocking rendering but executing in order */ if ( bbcdotcomScripts && bbcdotcomScripts.length > 0 ) { (function () { bbcdotcomScripts.forEach(function(item) { var script = document.createElement(\'script\'); script.async = false; if(item.id) script.id = item.id; script.src = item.src; document.head.appendChild(script); }); })(); } /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ (function() { window.bbcdotcom.head = true; }()); /*]]>*/</script><script type="text/javascript">// Globally available search context\n window.SEARCHBOX={"variant":"default" "locale":"en" "feature":"" "navSearchboxStaticPrefix":"https://nav.files.bbci.co.uk/searchbox/e8104f1649a8e9020708db403265fc37/" "searchboxAppStaticPrefix":"https://nav.files.bbci.co.uk/searchbox/e8104f1649a8e9020708db403265fc37/drawer" "searchFormHtml":"<div tabindex=\\"-1\\" data-reactroot=\\"\\" data-reactid=\\"1\\" data-react-checksum=\\"842287743\\"><div data-reactid=\\"2\\"><section class=\\"se-searchbox-panel\\" data-reactid=\\"3\\"><div class=\\"se-g-wrap\\" data-reactid=\\"4\\"><div class=\\"se-g-layout\\" data-reactid=\\"5\\"><div class=\\"se-g-layout__item se-searchbox-title\\" aria-hidden=\\"true\\" data-reactid=\\"6\\">search</div><div class=\\"se-g-layout__item se-searchbox\\" data-reactid=\\"7\\"><form accept-charset=\\"utf-8\\" id=\\"searchboxDrawerForm\\" method=\\"get\\" action=\\"https://search.bbc.co.uk/search\\" data-reactid=\\"8\\"><label class=\\"se-searchbox__input\\" for=\\"se-searchbox-input-field\\" data-reactid=\\"9\\"><span class=\\"se-sr-only\\" data-reactid=\\"10\\">Search Term</span><input type=\\"text\\" name=\\"q\\" value=\\"\\" id=\\"se-searchbox-input-field\\" class=\\"se-searchbox__input__field\\" maxlength=\\"512\\" autocomplete=\\"off\\" autocorrect=\\"off\\" autocapitalize=\\"off\\" spellcheck=\\"false\\" tabindex=\\"0\\" data-reactid=\\"11\\"/></label><input type=\\"hidden\\" name=\\"scope\\" value=\\"\\" data-reactid=\\"12\\"/><button type=\\"submit\\" class=\\"se-searchbox__submit\\" tabindex=\\"0\\" data-bbc-container=\\"se-searchbox-panel\\" data-bbc-title=\\"search-icon\\" data-bbc-metadata=\\"{&quot;PAR&quot;:&quot;form::1&quot; &quot;CHD&quot;:&quot;button::1&quot;}\\" data-reactid=\\"13\\">Search</button><button type=\\"button\\" class=\\"se-searchbox__clear se-searchbox__clear--visible\\" tabindex=\\"0\\" data-bbc-container=\\"se-searchbox-panel\\" data-bbc-title=\\"clear-icon\\" data-bbc-metadata=\\"{&quot;PAR&quot;:&quot;form::1&quot; &quot;CHD&quot;:&quot;button::2&quot;}\\" data-reactid=\\"14\\">Close</button></form></div></div></div></section><div aria-live=\\"polite\\" aria-atomic=\\"true\\" class=\\"se-suggestions-container\\" data-reactid=\\"15\\"><section class=\\"se-g-wrap\\" data-reactid=\\"16\\"></section></div></div></div>" "searchScopePlaceholder":"<input type=\\"hidden\\" name=\\"scope\\" id=\\"orb-search-scope\\" value=\\"all\\">" "searchScopeParam":"?scope=all" "searchScopeTemplate":"all" "searchPlaceholderWrapperStart":"" "searchPlaceholderWrapperEnd":""};\n window.SEARCHBOX.suppress = false;\n window.SEARCHBOX.searchScope = SEARCHBOX.searchScopeTemplate.split(\'-\')[0];</script><link rel="stylesheet" href="https://nav.files.bbci.co.uk/searchbox/e8104f1649a8e9020708db403265fc37//css/main.css"><!--[if IE 8]>\n <script type="text/javascript" src="https://nav.files.bbci.co.uk/searchbox/e8104f1649a8e9020708db403265fc37//script/html5shiv.min.js"></script>\n <script type="text/javascript">window[\'searchboxIEVersion\'] = 8;</script>\n <link rel="stylesheet" href="https://nav.files.bbci.co.uk/searchbox/e8104f1649a8e9020708db403265fc37//css/ie8.css">\n<![endif]--><!--[if IE 9]>\n <script type="text/javascript">window[\'searchboxIEVersion\'] = 9;</script>\n<![endif]--><script type="text/javascript">require.config({\n "paths": {\n "orb/async/_footerpromo": \'https://nav.files.bbci.co.uk/navpromo/14e5b4661a09bc7754808edab113a159/js/async/_footerpromo\'\n }\n });</script> <script type="text/javascript">"use strict";!function(){window.__reverbStaticLocation="https://mybbc-analytics.files.bbci.co.uk/reverb-client-js/" window.__smarttagVersion="5.17.1" window.__reverb={} window.__reverb.__reverbLoadedPromise=new Promise(function(e n){window.__reverb.__resolveReverbLoaded=e window.__reverb.__rejectReverbLoaded=n}) window.__reverb.__reverbTimeout=setTimeout(function(){window.__reverb.__rejectReverbLoaded()} 5e3);var n=function(r d){window.__reverb.__reverbLoadedPromise.then(function(e){if(r&&r.detail){var n=r.detail.label t=r.detail.type i=r.detail.elem o=r.detail.originalEvent;r.detail.isClick&&(d=r.detail.isClick) e.userActionEvent(t n r.detail i o d)}} function(){console.log("Reverb failed to load. Event not sent")})};document.addEventListener("bbc-user-event" function(e){n(e !1)}) document.addEventListener("bbc-user-click" function(e){n(e !0)}) document.addEventListener("bbc-page-updated" function(){window.__reverb.__reverbLoadedPromise.then(function(e){e.initialise().then(function(){return e.viewEvent()})} function(){console.log("Reverb failed to load. Event not sent")})})}();</script><script type="text/javascript" src="https://mybbc-analytics.files.bbci.co.uk/reverb-client-js/reverb-1.2.0.js" async=""></script>\n <link type="text/css" rel="stylesheet" href="https://static.bbc.co.uk/news/1.303.03507/stylesheets/services/news/core.css">\n <!--[if lt IE 9]>\n <link type="text/css" rel="stylesheet" href="https://static.bbc.co.uk/news/1.303.03507/stylesheets/services/news/old-ie.css">\n <script src="https://static.bbc.co.uk/news/1.303.03507/js/vendor/html5shiv/html5shiv.js"></script>\n <![endif]-->\n <script id="news-loader"> if (document.getElementById("responsive-news")) { window.bbcNewsResponsive = true; } var isIE = (function() { var undef v = 3 div = document.createElement(\'div\') all = div.getElementsByTagName(\'i\'); while ( div.innerHTML = \'<!--[if gt IE \' + (++v) + \']><i></i><![endif]-->\' all[0] ); return v > 4 ? v : undef; }()); var modernDevice = \'querySelector\' in document && \'localStorage\' in window && \'addEventListener\' in window forceCore = document.cookie.indexOf(\'ckps_force_core\') !== -1; window.cutsTheMustard = modernDevice && !forceCore; if (window.cutsTheMustard) { document.documentElement.className += \' ctm\'; var insertPoint = document.getElementById(\'news-loader\') config = {"asset":{"asset_id":"26415021" "asset_locator":"urn:bbc:cps:asset:26415021" "asset_uri":"\\/news\\/technology-26415021" "original_asset_uri":null "first_created":{"date":"2014-03-03 07:36:59" "timezone_type":3 "timezone":"Europe\\/London"} "first_published":{"date":"2014-03-03 10:22:55" "timezone_type":3 "timezone":"Europe\\/London"} "last_updated":{"date":"2014-03-03 10:22:55" "timezone_type":3 "timezone":"Europe\\/London"} "options":{"allowDateStamp":true "allowPrintingSharingLinks":true "allowHeadline":true "allowRightHandSide":true "allowRelatedStoriesBox":true "includeComments":false "allowAdvertising":true "isIgorSeoTagsEnabled":false} "section":{"name":"Technology" "id":"99113" "uri":"\\/news\\/technology" "urlIdentifier":"\\/news\\/technology"} "language":"en-gb" "edition":"International" "audience":null "iStats_counter_name":"news.technology.story.26415021.page" "type":"STY" "curie":"asset:52db3466-0acb-3a48-98c6-21a6e4f5f1cf" "length":5362 "byline":{"name":"By Mark Ward" "persons":{"0":{"name":"Mark Ward" "function":"Technology correspondent BBC News"}} "title":"Technology correspondent BBC News"} "headline":"An hour to catch the coding bug" "mediaType":null "topicTags":null} "smpBrand":null "staticHost":"https:\\/\\/static.bbc.co.uk" "environment":"live" "locatorVersion":"0.46.3" "pathPrefix":"\\/news" "staticPrefix":"https:\\/\\/static.bbc.co.uk\\/news\\/1.303.03507" "jsPath":"https:\\/\\/static.bbc.co.uk\\/news\\/1.303.03507\\/js" "cssPath":"https:\\/\\/static.bbc.co.uk\\/news\\/1.303.03507\\/stylesheets\\/services\\/news" "cssPostfix":"" "dynamic":null "features":{"localnews":true "video":true "liveeventcomponent":true "mediaassetpage":true "gallery":true "sportstories":true "radiopromo":true "fromothernewssites":true "locallive":true "weather":true} "features2":{"apple_smart_banner":true "svg_brand":true "waf_deprecation_notice":true "local_news_cta":true "chartbeat":true "connected_stream":true "connected_stream_promo":true "dynatrace_beacon":true "nav":true "pulse_survey":false "local_survey":true "correspondents":true "blogs":true "open_graph":true "follow_us":true "marketdata_markets":true "marketdata_shares":true "nations_pseudo_nav":true "politics_election2015_topic_pages":true "responsive_breaking_news":true "live_event":true "most_popular":true "most_popular_tabs":true "routing":true "radiopromonownext":true "config_based_layout":true "orbit":true "map_most_watched":true "top_stories_promo":true "features_and_analysis":true "section_labels":true "index_title":true "share_tools":true "extracted_share_tools":true "local_live_promo":true "adverts":true "adverts_async":true "adexpert":true "igor_geo_redirect":true "igor_device_redirect":true "live":true "comscore_mmx":true "find_local_news":true "comments":true "comments_enhanced":true "browser_notify":true "stream_grid_promo":true "breaking_news":false "top_stories_max_volume":true "contact_form":true "channel_page":true "portlet_global_variants":true "suppress_lep_timezone":true "story_sticky_player":true "story_end_slate":true "story_smp_preview":true "embed_player_pid":true "cedexis":true "mpulse":true "story_single_column_layout":true "story_image_copyright_labels":true "ovp_resolve_primary_media_vpids":false "media_player":true "services_bar":true "live_v2_stream":true "ldp_tag_augmentation":true "map_related_topic_tags":true "olympics_tables":true "embedephant-social-embeds":true "interactive-social-embeds":true "social-embeds":true "amp_link":true "https_redirect":true "preload_fig":true "preconnect_oftused_domains":true "ati_analytics":true} "configuration":{"showtimestamp":"1" "showweather":"1" "showsport":"1" "showolympics":"1" "showfeaturemain":"1" "candyplatform":"EnhancedMobile" "showwatchlisten":"1" "showspecialreports":"" "videotopiccandyid":"" "showvideofeedsections":"1" "showstorytopstories":"" "showstoryfeaturesandanalysis":"1" "showstorymostpopular":"" "showgallery":"1" "cms":"cps" "channelpagecandyid":"10318089"} "pollingHost":"https:\\/\\/polling.bbc.co.uk" "service":"news" "locale":"en-GB" "locatorHost":null "locatorFlagPole":true "local":{"allowLocationLookup":true} "isWorldService":false "isChannelPage":false "languageVariant":"" "commentsHost":"https:\\/\\/www.bbc.co.uk" "search":null "comscoreAnalytics":null}; config.configuration[\'get\'] = function (key) { return this[key.toLowerCase()]; }; var bootstrapUI=function(){var e=function(){if(navigator.userAgent.match(/(Android (2.0|2.1))|(Nokia)|(OSRE\\/)|(Opera (Mini|Mobi))|(w(eb)?OSBrowser)|(UCWEB)|(Windows Phone)|(XBLWP)|(ZuneWP)/))return!1;if(navigator.userAgent.match(/MSIE 10.0/))return!0;var e t=document n=t.head||t.getElementsByTagName("head")[0] r=t.createElement("style") s=t.implementation||{hasFeature:function(){return!1}};r.type="text/css" n.insertBefore(r n.firstChild) e=r.sheet||r.styleSheet;var i=s.hasFeature("CSS2" "")?function(t){if(!e||!t)return!1;var n=!1;try{e.insertRule(t 0) n=!/unknown/i.test(e.cssRules[0].cssText) e.deleteRule(e.cssRules.length-1)}catch(r){}return n}:function(t){return e&&t?(e.cssText=t 0!==e.cssText.length&&!/unknown/i.test(e.cssText)&&0===e.cssText.replace(/\\r+|\\n+/g "").indexOf(t.split(" ")[0])):!1};return i(\'@font-face{ font-family:"font";src:"font.ttf"; }\')}();e&&(document.getElementsByTagName("html")[0].className+=" ff") function(){var e=document.documentElement.style;("flexBasis"in e||"WebkitFlexBasis"in e||"msFlexBasis"in e)&&(document.documentElement.className+=" flex")}();var t n r s i a={} o=function(){var e=document.documentElement.clientWidth n=window.innerWidth r=n>1.5*e;t=r?e:n} u=function(e){var t=document.createElement("link");t.setAttribute("rel" "stylesheet") t.setAttribute("type" "text/css") t.setAttribute("href" n+e+r+".css") t.setAttribute("media" i[e]) s.parentNode.insertBefore(t s) delete i[e]} c=function(e n r){n&&!r&&t>=n&&u(e) r&&!n&&r>=t&&u(e) n&&r&&t>=n&&r>=t&&u(e)} l=function(e){if(a[e])return a[e];var t=e.match(/\\(min\\-width:[\\s]*([\\s]*[0-9\\.]+)(px|em)[\\s]*\\)/) n=e.match(/\\(max\\-width:[\\s]*([\\s]*[0-9\\.]+)(px|em)[\\s]*\\)/) r=t&&parseFloat(t[1])||null s=n&&parseFloat(n[1])||null;return a[e]=[r s] a[e]} f=function(){var e=0;for(var t in i)e++;return e} m=function(){f()||window.removeEventListener("resize" d !1);for(var e in i){var t=i[e] n=l(t);c(e n[0] n[1])}} d=function(){o() m()} h=function(e t){i=e n=t.path+("/"!==t.path.substr(-1)?"/":"") r=t.postfix s=t.insertBefore o() m() window.addEventListener("resize" d !1)};return{stylesheetLoaderInit:h}}(); var stylesheets = {"compact":"(max-width: 599px)" "tablet":"(min-width: 600px) and (max-width: 1007px)" "wide":"(min-width: 1008px)"}; bootstrapUI.stylesheetLoaderInit(stylesheets { path: \'https://static.bbc.co.uk/news/1.303.03507/stylesheets/services/news\' postfix: \'\' insertBefore: insertPoint }); var loadRequire = function(){ var js_paths = {"jquery-1.9":"vendor\\/jquery-1\\/jquery" "jquery-1":"https:\\/\\/static.bbc.co.uk\\/frameworks\\/jquery\\/0.4.1\\/sharedmodules\\/jquery-1.7.2" "demi-1":"https:\\/\\/static.bbc.co.uk\\/frameworks\\/demi\\/0.10.1\\/sharedmodules\\/demi-1" "swfobject-2":"https:\\/\\/static.bbc.co.uk\\/frameworks\\/swfobject\\/0.1.10\\/sharedmodules\\/swfobject-2" "jquery":"vendor\\/jquery-2\\/jquery.min" "domReady":"vendor\\/require\\/domReady" "translation":"module\\/translations\\/en-GB" "bump-3":"\\/\\/emp.bbci.co.uk\\/emp\\/bump-3\\/bump-3"}; js_paths.navigation = \'module/nav/navManager\'; require.config({ baseUrl: \'https://static.bbc.co.uk/news/1.303.03507/js\' map: { \'vendor/locator\': { \'module/bootstrap\': \'vendor/locator/bootstrap\' \'locator/stats\': \'vendor/locator/stats\' \'locator/locatorView\': \'vendor/locator/locatorView\' } } paths: js_paths waitSeconds: 30 }); define(\'config\' function () { return config; }); require(["compiled\\/all"] function() {\n require([\'domReady\'] function (domReady) { domReady(function () { require(["module\\/dotcom\\/handlerAdapter" "module\\/stats\\/statsSubscriberAdapter" "module\\/alternativeJsStrategy\\/controller" "module\\/iconLoaderAdapter" "module\\/polyfill\\/location.origin" "module\\/components\\/breakingNewsAdapter" "module\\/indexTitleAdaptor" "module\\/navigation\\/handlerAdaptor" "module\\/noTouchDetectionForCss" "module\\/components\\/stickyPlayer\\/mainAdapter" "module\\/components\\/responsiveImage" "module\\/components\\/timestampAdaptor" "module\\/components\\/twiteAdapter" "module\\/tableScrollAdapter" "module\\/userScrollAdapter" "module\\/components\\/mediaPlayer\\/mainAdapter" "module\\/endSlateAdaptor" "module\\/components\\/fauxBlockLink"] function() { require(["module\\/strategiserAdaptor"]); }); }); }); });\n }; loadRequire(); } else { var l = document.createElement(\'link\'); l.href = \'https://static.bbc.co.uk/news/1.303.03507/icons/generated/icons.fallback.css\'; l.rel = \'stylesheet\'; document.getElementsByTagName(\'head\')[0].appendChild(l); } </script> <script type="text/javascript"> /*<![CDATA[*/ bbcdotcom.init({adsToDisplay:[\'leaderboard\' \'sponsor_section\' \'mpu\' \'infeed_news_story\' \'outbrain_ar_5\' \'outbrain_ar_7\' \'outbrain_ar_8\' \'outbrain_ar_9\' \'native\' \'mpu_bottom\' \'adsense\' \'inread\'] asyncEnabled:true }); /*]]>*/ </script> <noscript><link href="https://static.bbc.co.uk/news/1.303.03507/icons/generated/icons.fallback.css" rel="stylesheet"></noscript>\n \n \n \n \n </head>\n<!--[if IE]><body id="asset-type-sty" class="ie device--feature"><![endif]-->\n<!--[if !IE]>--><body id="asset-type-sty" class="device--feature"><!--<![endif]-->\n <div class="direction" >\n \n <noscript><p style="position: absolute; top: -999em"><img src="https://a1.api.bbc.co.uk/hit.xiti?&col=1&from=p&ptag=js&s=598253&p=technology::news.technology.story.26415021.page&x1=[urn:bbc:cps:52db3466-0acb-3a48-98c6-21a6e4f5f1cf]&x2=[responsive]&x3=[bbc_website]&x4=[en]&x7=[article]&x8=[reverb-1.2.0-nojs]&x11=[NEWS_GNL]&x12=[NEWS]" height="1" width="1" alt=""></p></noscript> <!-- BBCDOTCOM bodyFirst --><div id="bbccom_interstitial_ad" class="bbccom_display_none"></div><div id="bbccom_interstitial" class="bbccom_display_none"><script type="text/javascript">/*<![CDATA[*/ (function() { if (window.bbcdotcom && bbcdotcom.config.isActive(\'ads\')) { googletag.cmd.push(function() { googletag.display(\'bbccom_interstitial\'); }); } }()); /*]]>*/</script></div><div id="bbccom_wallpaper_ad" class="bbccom_display_none"></div><div id="bbccom_wallpaper" class="bbccom_display_none"><script type="text/javascript">/*<![CDATA[*/ (function() { var wallpaper; if (window.bbcdotcom && bbcdotcom.config.isActive(\'ads\')) { if (bbcdotcom.config.isAsync()) { googletag.cmd.push(function() { googletag.display(\'bbccom_wallpaper\'); }); } else if (typeof googletag !== "undefined" && typeof googletag.display === "function") { googletag.display("wallpaper"); } wallpaper = bbcdotcom.adverts.adRegister.getAd(\'wallpaper\'); } }()); /*]]>*/</script></div><script type="text/javascript">/*<![CDATA[*/ (function() { if (window.bbcdotcom && bbcdotcom.config.isActive(\'ads\')) { document.write(unescape(\'%3Cscript id="gnlAdsEnabled" class="bbccom_display_none"%3E%3C/script%3E\')); } if (window.bbcdotcom && bbcdotcom.config.isActive(\'analytics\')) { document.write(unescape(\'%3Cscript id="gnlAnalyticsEnabled" class="bbccom_display_none"%3E%3C/script%3E\')); } }()); /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ (function() { window.bbcdotcom.bodyFirst = true; }()); /*]]>*/</script> <div id="cookiePrompt"></div> <!--[if (gt IE 8) | (IEMobile)]><!--><header id="orb-banner" role="banner" aria-label="BBC"><!--<![endif]--><!--[if (lt IE 9) & (!IEMobile)]>\n <![if (IE 8)]>\n <header id="orb-banner" role="banner" class="orb-old-ie orb-ie8" aria-label="BBC">\n <![endif]>\n <![if (IE 7)]>\n <header id="orb-banner" role="banner" class="orb-old-ie orb-ie7" aria-label="BBC">\n <![endif]>\n <![if (IE 6)]>\n <header id="orb-banner" role="banner" class="orb-old-ie orb-ie6" aria-label="BBC">\n <![endif]>\n <![endif]--><div id="orb-header" class="orb-nav-pri orb-nav-pri-white orb-nav-empty" dir="ltr"><div class="orb-nav-pri-container b-r b-g-p"><div class="orb-nav-section orb-nav-blocks"><a href="https://www.bbc.co.uk">Homepage</a></div><section><div class="orb-skip-links"><h2>Accessibility links</h2><ul><li><a href="#page">Skip to content</a></li><li><a id="orb-accessibility-help" href="/accessibility/">Accessibility Help</a></li></ul></div></section><div id="mybbc-wrapper" class="orb-nav-section orb-nav-id orb-nav-focus orb-nav-id-default"><div id="idcta-statusbar" class="orb-nav-section orb-nav-focus" data-bbc-container="id-cta" data-bbc-event-type="click" data-bbc-ignore-views="1" data-bbc-metadata="{&quot;id-cta-type&quot;: &quot;statusbar-orb&quot;}" data-bbc-source="responsive_web" data-bbc-title="id-cta-sign-in"><a id="idcta-link" href="https://account.bbc.com/account?ptrt=https://www.bbc.com/news/technology-26415021"><span id="idcta-username">BBC Account</span></a></div><script type="text/javascript">require([\'idcta/statusbar\'] function (statusbar) {new statusbar.Statusbar({id: \'idcta-statusbar\' publiclyCacheable: true});});</script><!-- Because we are now loading the notification bell CSS asynchronously we need this inline style hack to ensure that the notification div \n is hidden by default and shown only if and when the bell code is loaded from notification-ui --><a id="notification-link" class="js-notification-link animated three" href="#" style="display: none"><span class="hidden-span">Notifications</span><div class="notification-link--triangle"></div><div class="notification-link--triangle"></div><span id="not-num"></span></a></div><nav role="navigation" aria-label="BBC" class="orb-nav"><div class="orb-nav-section orb-nav-links orb-nav-focus" id="orb-nav-links"><ul><li class="orb-nav-home"><a href="https://www.bbc.co.uk">Home</a></li><li class="orb-nav-news"><a href="https://www.bbc.co.uk/news">News</a></li><li class="orb-nav-sport"><a href="https://www.bbc.co.uk/sport">Sport</a></li><li class="orb-nav-weather"><a href="https://www.bbc.co.uk/weather">Weather</a></li><li class="orb-nav-iplayer"><a href="https://www.bbc.co.uk/iplayer">iPlayer</a></li><li class="orb-nav-sounds"><a href="https://www.bbc.co.uk/sounds">Sounds</a></li><li class="orb-nav-cbbc"><a href="https://www.bbc.co.uk/cbbc">CBBC</a></li><li class="orb-nav-cbeebies"><a href="https://www.bbc.co.uk/cbeebies">CBeebies</a></li><li class="orb-nav-food"><a href="https://www.bbc.co.uk/food">Food</a></li><li class="orb-nav-bitesize"><a href="https://www.bbc.co.uk/bitesize">Bitesize</a></li><li class="orb-nav-arts"><a href="https://www.bbc.co.uk/arts">Arts</a></li><li class="orb-nav-taster"><a href="https://www.bbc.co.uk/taster">Taster</a></li><li class="orb-nav-local"><a href="https://www.bbc.co.uk/news/localnews">Local</a></li><li class="orb-nav-tv"><a href="https://www.bbc.co.uk/tv">TV</a></li><li class="orb-nav-radio"><a href="https://www.bbc.co.uk/radio">Radio</a></li><li class="orb-nav-three"><a href="https://www.bbc.co.uk/bbcthree">Three</a></li><li id="orb-nav-more" style="width: 88px" aria-controls="orb-panel-more"><a href="#orb-footer" data-alt="More" class="istats-notrack">Menu<span class="orb-icon orb-icon-arrow"></span></a></li></ul></div></nav><div class="orb-nav-section orb-nav-search"><a class="orb-search__button" href="https://search.bbc.co.uk/search?scope&#x3D;all" title="Search the BBC">Search</a><form class="b-f" id="orb-search-form" role="search" method="get" action="https://search.bbc.co.uk/search" accept-charset="utf-8"><div><input type="hidden" name="scope" id="orb-search-scope" value="all"><label for="orb-search-q">Search the BBC</label><input id="orb-search-q" type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" name="q" placeholder="Search"><button id="orb-search-button" class="orb-search__button">Search the BBC</button><input type="hidden" name="suggid" id="orb-search-suggid"></div></form></div></div><div id="orb-panels"></div></div></header> <!-- Styling hook for shared modules only -->\n<div id="orb-modules">\n <div id="site-container">\n <!--[if lt IE 9]>\n<div class="browser-notify">\n <div class="browser-notify__banner">\n <div class="browser-notify__icon"></div>\n <span>This site is optimised for modern web browsers and does not fully support your version of Internet Explorer</span>\n </div>\n</div>\n<![endif]--> <div class="site-brand site-brand--height" role="banner" aria-label="BBC News">\n <div class="site-brand-inner site-brand-inner--height">\n <div class="navigation navigation--primary">\n <a href="/news" id="brand">\n <svg class="brand__svg" width="102" height="30" focusable="false" aria-hidden="true">\n <image xlink:href="https://static.bbc.co.uk/news/1.303.03507/img/brand/generated/news-light.svg" src="https://static.bbc.co.uk/news/1.303.03507/img/brand/generated/news-light.png" width="100%" height="100%"/>\n </svg>\n <span class="off-screen">News</span>\n </a> <h2 class="navigation__heading off-screen">BBC News Navigation</h2>\n <div class="nav-buttons">\n <a href="#core-navigation" class="navigation__section navigation__section--core" data-event="header">\n <div class="navigation__section--icon">\n <span class="off-screen">Sections</span>\n </div>\n </a>\n </div>\n </div>\n </div>\n \n<div class="navigation navigation--wide">\n <ul class="navigation-wide-list" role="navigation" aria-label="BBC News" data-panel-id="js-navigation-panel-primary">\n <li>\n <a href="/news" class="navigation-wide-list__link">\n <span>Home</span>\n </a>\n </li>\n <li>\n <a href="/news/video_and_audio/headlines" class="navigation-wide-list__link">\n <span>Video</span>\n </a>\n </li>\n <li>\n <a href="/news/world" data-panel-id="js-navigation-panel-World" class="navigation-wide-list__link">\n <span>World</span>\n </a>\n </li>\n <li>\n <a href="/news/uk" data-panel-id="js-navigation-panel-UK" class="navigation-wide-list__link">\n <span>UK</span>\n </a>\n </li>\n <li>\n <a href="/news/business" data-panel-id="js-navigation-panel-Business" class="navigation-wide-list__link">\n <span>Business</span>\n </a>\n </li>\n <li class="selected">\n <a href="/news/technology" class="navigation-wide-list__link navigation-arrow--open">\n <span>Tech</span>\n </a>\n <span class="off-screen">selected</span> </li>\n <li>\n <a href="/news/science_and_environment" class="navigation-wide-list__link">\n <span>Science</span>\n </a>\n </li>\n <li>\n <a href="/news/stories" class="navigation-wide-list__link">\n <span>Stories</span>\n </a>\n </li>\n <li>\n <a href="/news/entertainment_and_arts" class="navigation-wide-list__link">\n <span>Entertainment &amp; Arts</span>\n </a>\n </li>\n <li>\n <a href="/news/health" class="navigation-wide-list__link">\n <span>Health</span>\n </a>\n </li>\n <li>\n <a href="/news/world_radio_and_tv" class="navigation-wide-list__link">\n <span>World News TV</span>\n </a>\n </li>\n <li>\n <a href="/news/in_pictures" class="navigation-wide-list__link">\n <span>In Pictures</span>\n </a>\n </li>\n <li>\n <a href="/realitycheck" class="navigation-wide-list__link">\n <span>Reality Check</span>\n </a>\n </li>\n <li>\n <a href="/news/newsbeat" class="navigation-wide-list__link">\n <span>Newsbeat</span>\n </a>\n </li>\n <li>\n <a href="/news/special_reports" class="navigation-wide-list__link">\n <span>Special Reports</span>\n </a>\n </li>\n <li>\n <a href="/news/explainers" class="navigation-wide-list__link">\n <span>Explainers</span>\n </a>\n </li>\n <li>\n <a href="/news/the_reporters" class="navigation-wide-list__link">\n <span>The Reporters</span>\n </a>\n </li>\n <li>\n <a href="/news/have_your_say" class="navigation-wide-list__link navigation-wide-list__link--last">\n <span>Have Your Say</span>\n </a>\n </li>\n </ul>\n</div>\n </div>\n \n \n<div id="bbccom_leaderboard_1_2_3_4" class="bbccom_slot " aria-hidden="true">\n <div class="bbccom_advert">\n <script type="text/javascript">\n /*<![CDATA[*/\n (function() {\n if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {\n bbcdotcom.adverts.slotAsync(\'leaderboard\' [1 2 3 4]);\n }\n })();\n /*]]>*/\n </script>\n </div>\n</div>\n <div id="breaking-news-container" data-polling-url="https://polling.bbc.co.uk/news/latest_breaking_news?audience=International" aria-live="polite"></div>\n <div class="container-width-only">\n <span class="index-title index-title--redundant " id="comp-index-title" data-index-title-meta="{&quot;id&quot;:&quot;comp-index-title&quot; &quot;type&quot;:&quot;index-title&quot; &quot;handler&quot;:&quot;indexTitle&quot; &quot;deviceGroups&quot;:null &quot;opts&quot;:{&quot;alwaysVisible&quot;:false &quot;onFrontPage&quot;:false} &quot;template&quot;:&quot;index-title&quot;}">\n <span class="index-title__container">\n <a href="/news/technology">Technology</a>\n </span>\n </span>\n \n<div id="bbccom_sponsor_section_1_2_3_4" class="bbccom_slot " aria-hidden="true">\n <div class="bbccom_advert">\n <script type="text/javascript">\n /*<![CDATA[*/\n (function() {\n if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {\n bbcdotcom.adverts.slotAsync(\'sponsor_section\' [1 2 3 4]);\n }\n })();\n /*]]>*/\n </script>\n </div>\n</div>\n </div>\n \n <div id="page" class="configurable story " data-story-id="technology-26415021"> <div role="main"> <div class="container-width-only"> <span class="index-title index-title--redundant " id="comp-index-title" data-index-title-meta="{&quot;id&quot;:&quot;comp-index-title&quot; &quot;type&quot;:&quot;index-title&quot; &quot;handler&quot;:&quot;indexTitle&quot; &quot;deviceGroups&quot;:null &quot;opts&quot;:{&quot;alwaysVisible&quot;:false &quot;onFrontPage&quot;:false} &quot;template&quot;:&quot;index-title&quot;}">\n <span class="index-title__container">\n <a href="/news/technology">Technology</a>\n </span>\n </span>\n \n<div id="bbccom_sponsor_section_1_2_3_4" class="bbccom_slot " aria-hidden="true">\n <div class="bbccom_advert">\n <script type="text/javascript">\n /*<![CDATA[*/\n (function() {\n if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {\n bbcdotcom.adverts.slotAsync(\'sponsor_section\' [1 2 3 4]);\n }\n })();\n /*]]>*/\n </script>\n </div>\n</div>\n </div> <div class="container"> <div class="container--primary-and-secondary-columns column-clearfix"> <div class="column--primary">\n \n<div class="story-body">\n <h1 class="story-body__h1">An hour to catch the coding bug</h1>\n <div class="byline">\n <span class="byline__name">By Mark Ward</span>\n <span class="byline__title">Technology correspondent BBC News</span>\n </div>\n <div class="with-extracted-share-icons">\n <div class="story-body__mini-info-list-and-share">\n <div class="story-body__mini-info-list-and-share-row">\n <div class="mini-info-list-wrap">\n <ul class="mini-info-list">\n <li class="mini-info-list__item"><div class="date date--v2" data-seconds="1393842175" data-datetime="3 March 2014">3 March 2014</div></li>\n</ul>\n </div>\n <div class="share-tools--event-tag">\n \n <div id="comp-pattern-library-5" class="distinct-component-group container-twite">\n \n <ul class="sharetools">\n <li class="twite__channel-out twite__channel-out--desktop twite__channel-out--facebook twite__channel-click-extracted--facebook twite__list-elements" aria-hidden="true">\n <a class="extracted__channel-link extracted__channel-link--facebook"onclick="window.open(\'http://www.facebook.com/dialog/feed?app_id=58567469885&amp;redirect_uri=http%3A%2F%2Fwww.bbc.co.uk%2Fnews%2Fspecial%2Fshared%2Fvj_sharetools%2Ffb_red_uri.html&amp;link=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3FSThisFB&amp;display=popup\' \'_blank\' \'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=555 height=615\').opener = null" href=\'#\' tabindex="-1">\n <span class="extracted__icon extracted__icon--facebook" data-platform="facebook">\n <svg class="extracted-svg ex-facebook" viewBox="-17 -13 44 44" enable-background="new 0 0 44 44" width="44px" height="44px" aria-hidden="true" focusable="false">\n <g><path d="M5.73 17 L5.73 9.246 L8.333 9.246 L8.723 6.223 L5.73 6.223 L5.73 4.294 C5.73 3.419 5.973 2.823 7.228 2.823 L8.828 2.822 L8.828 0.119 C8.551 0.082 7.601 0 6.496 0 C4.189 0 2.609 1.408 2.609 3.995 L2.609 6.223 L0 6.223 L0 9.246 L2.609 9.246 L2.609 17 L5.73 17 Z"/></g>\n </svg>\n </span>\n <span class="off-screen">Share this with Facebook</span>\n </a>\n </li>\n <li class="twite__channel-out twite__channel-out--desktop twite__channel-out--messengerdesktop twite__channel-click-extracted--messengerdesktop twite__list-elements" aria-hidden="true">\n <a class="extracted__channel-link extracted__channel-link--messengerdesktop"onclick="window.open(\'http://www.facebook.com/dialog/send?app_id=58567469885&amp;redirect_uri=http%3A%2F%2Fwww.bbc.co.uk%2Fnews%2Fspecial%2Fshared%2Fvj_sharetools%2Ffb_red_uri.html&amp;link=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3FSThisFB&amp;display=popup\' \'_blank\' \'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=645 height=580\').opener = null" href=\'#\' tabindex="-1">\n <span class="extracted__icon extracted__icon--messengerdesktop" data-platform="messengerdesktop">\n <svg class="extracted-svg ex-messengerdesktop" viewBox="-14 -13 44 44" enable-background="new 0 0 44 44" width="44px" height="44px" aria-hidden="true" focusable="false">\n <g><path d="M9.84804801 11.1721834 L7.54389655 8.77893955 L3.1059828 11.2323207 L7.97153994 6.06941781 L10.2756914 8.46377529 L14.7136051 6.00928046 L9.84804801 11.1721834 Z M8.90923715 0 C3.98911093 0 0 3.73074306 0 8.33125039 C0 10.9494525 1.29183939 13.2847862 3.3097816 14.8116068 L3.3097816 18 L6.35117243 16.3139269 C7.16079936 16.5399988 8.02054074 16.6625008 8.90923715 16.6625008 C13.830477 16.6625008 17.8184743 12.9328714 17.8184743 8.33125039 C17.8184743 3.73074306 13.830477 0 8.90923715 0 L8.90923715 0 Z"/></g>\n </svg>\n </span>\n <span class="off-screen">Share this with Messenger</span>\n </a>\n </li>\n <li class="twite__channel-out twite__channel-out--desktop twite__channel-out--twitter twite__channel-click-extracted--twitter twite__list-elements" aria-hidden="true">\n <a class="extracted__channel-link extracted__channel-link--twitter"onclick="window.open(\'https://twitter.com/intent/tweet?text=BBC%20News%20-%20An%20hour%20to%20catch%20the%20coding%20bug&amp;url=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021\' \'_blank\' \'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=550 height=250\').opener = null" href=\'#\' class=shortenUrl data-social-url=https://twitter.com/intent/tweet?text=BBC+News+-+An+hour+to+catch+the+coding+bug&amp;amp;url= data-target-url=https://www.bbc.com/news/technology-26415021 tabindex="-1">\n <span class="extracted__icon extracted__icon--twitter" data-platform="twitter">\n <svg class="extracted-svg ex-twitter" viewBox="-13 -15 44 44" enable-background="new 0 0 44 44" width="44px" height="44px" aria-hidden="true" focusable="false">\n <g><path d="M5.80573373 15 C12.7721527 15 16.581877 9.22887915 16.581877 4.22385671 C16.581877 4.06002242 16.581877 3.89618812 16.5714931 3.73466135 C17.3122088 3.19816171 17.9525471 2.53359441 18.4602026 1.77326482 C17.7690988 2.08016568 17.0364595 2.28092039 16.28536 2.36976011 C17.0756874 1.89671742 17.6675677 1.15138674 17.9502395 0.274527115 C17.2072164 0.715264453 16.3938137 1.02678037 15.5457981 1.19407596 C14.1105174 -0.331198284 11.7118448 -0.405039095 10.1865706 1.0290879 C9.20241101 1.95440555 8.78590269 3.33315194 9.09049603 4.64844138 C6.04571636 4.4961447 3.20861397 3.05740266 1.28529161 0.691035437 C0.280364327 2.42167943 0.793788713 4.63574999 2.45751448 5.74682343 C1.85525036 5.72951699 1.26567764 5.56683646 0.738408105 5.27262698 L0.738408105 5.32108501 C0.739561868 7.12441605 2.00985456 8.67622684 3.77741896 9.03389326 C3.2201516 9.18618993 2.63519393 9.20811142 2.06754269 9.09850397 C2.56366064 10.6410847 3.98509624 11.6979313 5.60613279 11.7290828 C4.26430681 12.7824682 2.60750362 13.3547344 0.902242404 13.3535807 C0.601110348 13.3524269 0.299978293 13.3339667 7.10542736e-15 13.2982001 C1.73295152 14.4104273 3.74742113 15 5.80573373 14.9965387"/></g>\n </svg>\n </span>\n <span class="off-screen">Share this with Twitter</span>\n </a>\n </li>\n <li class="twite__channel-out twite__channel-out--desktop twite__channel-out--email twite__channel-click-extracted--email twite__list-elements" aria-hidden="true">\n <a class="extracted__channel-link extracted__channel-link--email"href=\'mailto:?subject=Shared%20from%20BBC%20News&amp;body=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021\' tabindex="-1">\n <span class="extracted__icon extracted__icon--email" data-platform="email">\n <svg class="extracted-svg ex-email" viewBox="-7 1 27 9" enable-background="new 0 0 44 44" width="44px" height="44px" aria-hidden="true" focusable="false">\n <g><path d="M11 4.9V9H2V2.1l4.6 5L13.1 0H0.2H0v11h13V2.8L11 4.9z M10.2 2L6.7 5.8L3.2 2H10.2z"/></g>\n </svg>\n </span>\n <span class="off-screen">Share this with Email</span>\n </a>\n </li>\n <li class="twite__channel-out twite__channel-out--mobile twite__channel-out--facebook twite__channel-click-extracted--facebook twite__list-elements" aria-hidden="true">\n <a class="extracted__channel-link extracted__channel-link--facebook"onclick="window.open(\'http://www.facebook.com/dialog/feed?app_id=58567469885&amp;redirect_uri=http%3A%2F%2Fwww.bbc.co.uk%2Fnews%2Fspecial%2Fshared%2Fvj_sharetools%2Ffb_red_uri.html&amp;link=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3FSThisFB&amp;display=popup\' \'_blank\' \'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=555 height=615\').opener = null" href=\'#\' tabindex="-1">\n <span class="extracted__icon extracted__icon--facebook" data-platform="facebook">\n <svg class="extracted-svg ex-facebook" viewBox="-17 -13 44 44" enable-background="new 0 0 44 44" width="44px" height="44px" aria-hidden="true" focusable="false">\n <g><path d="M5.73 17 L5.73 9.246 L8.333 9.246 L8.723 6.223 L5.73 6.223 L5.73 4.294 C5.73 3.419 5.973 2.823 7.228 2.823 L8.828 2.822 L8.828 0.119 C8.551 0.082 7.601 0 6.496 0 C4.189 0 2.609 1.408 2.609 3.995 L2.609 6.223 L0 6.223 L0 9.246 L2.609 9.246 L2.609 17 L5.73 17 Z"/></g>\n </svg>\n </span>\n <span class="off-screen">Share this with Facebook</span>\n </a>\n </li>\n <li class="twite__channel-out twite__channel-out--mobile twite__channel-out--whatsapp twite__channel-click-extracted--whatsapp twite__list-elements" aria-hidden="true">\n <a class="extracted__channel-link extracted__channel-link--whatsapp"onclick="window.open(\'whatsapp://send?text=BBC%20News%20%7C%20An%20hour%20to%20catch%20the%20coding%20bug%20-%20https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3Focid%3Dwsnews.chat-apps.in-app-msg.whatsapp.trial.link1_.auin\' \'_blank\' \'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=600 height=600\').opener = null" href=\'#\' tabindex="-1">\n <span class="extracted__icon extracted__icon--whatsapp" data-platform="whatsapp">\n <svg class="extracted-svg ex-whatsapp" viewBox="-11 -11 44 44" enable-background="new 0 0 44 44" width="44px" height="44px" aria-hidden="true" focusable="false">\n <g><path d="M0.6 19.4L1.9 14.7C1 13.3 0.6 11.7 0.6 10 0.6 4.8 4.8 0.5 10 0.5 15.2 0.5 19.4 4.8 19.4 10 19.4 15.2 15.2 19.4 10 19.4 8.4 19.4 6.8 19 5.4 18.2L0.6 19.4ZM5.6 16.5L5.9 16.7C7.2 17.4 8.6 17.8 10 17.8 14.3 17.8 17.8 14.3 17.8 10 17.8 5.7 14.3 2.1 10 2.1 5.7 2.1 2.2 5.7 2.2 10 2.2 11.5 2.6 12.9 3.4 14.2L3.6 14.5 2.8 17.2 5.6 16.5Z M7.4 5.6L6.7 5.5C6.6 5.5 6.4 5.6 6.2 5.7 5.9 6 5.5 6.5 5.3 7.1 5.1 8.1 5.4 9.3 6.3 10.5 7.2 11.6 8.8 13.5 11.6 14.4 12.6 14.6 13.3 14.4 13.8 14.1 14.3 13.8 14.6 13.3 14.7 12.8L14.8 12.4C14.8 12.2 14.8 12.1 14.6 12L12.6 11.1C12.4 11 12.3 11 12.2 11.2L11.4 12.2C11.3 12.3 11.2 12.3 11.1 12.3 10.5 12.1 8.7 11.3 7.7 9.3 7.6 9.3 7.6 9.2 7.7 9.1L8.5 8.2C8.5 8.1 8.6 8 8.5 7.9L7.6 5.8C7.6 5.7 7.5 5.6 7.4 5.6Z"/></g>\n </svg>\n </span>\n <span class="off-screen">Share this with WhatsApp</span>\n </a>\n </li>\n <li class="twite__channel-out twite__channel-out--mobile twite__channel-out--messengermobile twite__channel-click-extracted--messengermobile twite__list-elements" aria-hidden="true">\n <a class="extracted__channel-link extracted__channel-link--messengermobile"href=\'fb-messenger://share?app_id=58567469885&amp;redirect_uri=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021&amp;link=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3FCMP%3Dshare_btn_me\' target=_blank rel=noopener tabindex="-1">\n <span class="extracted__icon extracted__icon--messengermobile" data-platform="messengermobile">\n <svg class="extracted-svg ex-messengermobile" viewBox="-14 -13 44 44" enable-background="new 0 0 44 44" width="44px" height="44px" aria-hidden="true" focusable="false">\n <g><path d="M9.84804801 11.1721834 L7.54389655 8.77893955 L3.1059828 11.2323207 L7.97153994 6.06941781 L10.2756914 8.46377529 L14.7136051 6.00928046 L9.84804801 11.1721834 Z M8.90923715 0 C3.98911093 0 0 3.73074306 0 8.33125039 C0 10.9494525 1.29183939 13.2847862 3.3097816 14.8116068 L3.3097816 18 L6.35117243 16.3139269 C7.16079936 16.5399988 8.02054074 16.6625008 8.90923715 16.6625008 C13.830477 16.6625008 17.8184743 12.9328714 17.8184743 8.33125039 C17.8184743 3.73074306 13.830477 0 8.90923715 0 L8.90923715 0 Z"/></g>\n </svg>\n </span>\n <span class="off-screen">Share this with Messenger</span>\n </a>\n </li>\n <li class="twite__channel-out twite__channel-out--mobile twite__channel-out--twitter twite__channel-click-extracted--twitter twite__list-elements" aria-hidden="true">\n <a class="extracted__channel-link extracted__channel-link--twitter"onclick="window.open(\'https://twitter.com/intent/tweet?text=BBC%20News%20-%20An%20hour%20to%20catch%20the%20coding%20bug&amp;url=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021\' \'_blank\' \'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=550 height=250\').opener = null" href=\'#\' class=shortenUrl data-social-url=https://twitter.com/intent/tweet?text=BBC+News+-+An+hour+to+catch+the+coding+bug&amp;amp;url= data-target-url=https://www.bbc.com/news/technology-26415021 tabindex="-1">\n <span class="extracted__icon extracted__icon--twitter" data-platform="twitter">\n <svg class="extracted-svg ex-twitter" viewBox="-13 -15 44 44" enable-background="new 0 0 44 44" width="44px" height="44px" aria-hidden="true" focusable="false">\n <g><path d="M5.80573373 15 C12.7721527 15 16.581877 9.22887915 16.581877 4.22385671 C16.581877 4.06002242 16.581877 3.89618812 16.5714931 3.73466135 C17.3122088 3.19816171 17.9525471 2.53359441 18.4602026 1.77326482 C17.7690988 2.08016568 17.0364595 2.28092039 16.28536 2.36976011 C17.0756874 1.89671742 17.6675677 1.15138674 17.9502395 0.274527115 C17.2072164 0.715264453 16.3938137 1.02678037 15.5457981 1.19407596 C14.1105174 -0.331198284 11.7118448 -0.405039095 10.1865706 1.0290879 C9.20241101 1.95440555 8.78590269 3.33315194 9.09049603 4.64844138 C6.04571636 4.4961447 3.20861397 3.05740266 1.28529161 0.691035437 C0.280364327 2.42167943 0.793788713 4.63574999 2.45751448 5.74682343 C1.85525036 5.72951699 1.26567764 5.56683646 0.738408105 5.27262698 L0.738408105 5.32108501 C0.739561868 7.12441605 2.00985456 8.67622684 3.77741896 9.03389326 C3.2201516 9.18618993 2.63519393 9.20811142 2.06754269 9.09850397 C2.56366064 10.6410847 3.98509624 11.6979313 5.60613279 11.7290828 C4.26430681 12.7824682 2.60750362 13.3547344 0.902242404 13.3535807 C0.601110348 13.3524269 0.299978293 13.3339667 7.10542736e-15 13.2982001 C1.73295152 14.4104273 3.74742113 15 5.80573373 14.9965387"/></g>\n </svg>\n </span>\n <span class="off-screen">Share this with Twitter</span>\n </a>\n </li>\n <li class="twite twite__list-elements">\n <a href="#share-tools" class="twite__share-button" aria-label="Open share panel" data-origin="page" aria-expanded="false" aria-haspopup="true">\n <svg class="twite__share-icon" width="17px" aria-hidden="true" focusable="false" viewBox="0 0 29.266 32"><path d="M5.473 22.153c1.586 0 3.01-.684 4.012-1.762l9 4.845c-.102.412-.16.85-.16 1.297 0 3.02 2.452 5.468 5.472 5.468 3.017 0 5.47-2.446 5.47-5.468 0-3.023-2.453-5.47-5.47-5.47-1.587 0-3.02.68-4.015 1.757l-9.457-5.175-.074-2.792 9.74-5.456c.99.953 2.327 1.543 3.807 1.543 3.017 0 5.47-2.45 5.47-5.474 0-3.022-2.453-5.467-5.47-5.467-3.02 0-5.473 2.444-5.473 5.466 0 .554.08 1.09.243 1.597L9.27 12.75c-.988-.95-2.326-1.537-3.797-1.537C2.447 11.213 0 13.657 0 16.68c0 3.03 2.447 5.473 5.473 5.473"/></svg><span class="twite__share-text">Share</span>\n </a>\n <div class="twite__panel arrow-top" data-share-uri="">\n <p class="twite__title" aria-hidden="true">Share this with</p>\n <span class="off-screen">These are external links and will open in a new window</span>\n <ul class="twite__channels">\n <li class="twite__channel twite__channel--email twite__channel-click--email">\n <a class="twite__channel-link"href=\'mailto:?subject=Shared%20from%20BBC%20News&amp;body=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021\' >\n <span class="twite__icon twite__icon--email" data-platform="email"></span>\n <p class="twite__channel-text" aria-hidden="true">Email</p>\n <span class="off-screen">Share this with Email</span>\n </a>\n </li>\n <li class="twite__channel twite__channel--facebook twite__channel-click--facebook">\n <a class="twite__channel-link"onclick="window.open(\'http://www.facebook.com/dialog/feed?app_id=58567469885&amp;redirect_uri=http%3A%2F%2Fwww.bbc.co.uk%2Fnews%2Fspecial%2Fshared%2Fvj_sharetools%2Ffb_red_uri.html&amp;link=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3FSThisFB&amp;display=popup\' \'_blank\' \'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=555 height=615\').opener = null" href=\'#\' >\n <span class="twite__icon twite__icon--facebook" data-platform="facebook"></span>\n <p class="twite__channel-text" aria-hidden="true">Facebook</p>\n <span class="off-screen">Share this with Facebook</span>\n </a>\n </li>\n <li class="twite__channel twite__channel--messengerdesktop twite__channel-click--messengerdesktop">\n <a class="twite__channel-link"onclick="window.open(\'http://www.facebook.com/dialog/send?app_id=58567469885&amp;redirect_uri=http%3A%2F%2Fwww.bbc.co.uk%2Fnews%2Fspecial%2Fshared%2Fvj_sharetools%2Ffb_red_uri.html&amp;link=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3FSThisFB&amp;display=popup\' \'_blank\' \'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=645 height=580\').opener = null" href=\'#\' >\n <span class="twite__icon twite__icon--messengerdesktop" data-platform="messengerdesktop"></span>\n <p class="twite__channel-text" aria-hidden="true">Messenger</p>\n <span class="off-screen">Share this with Messenger</span>\n </a>\n </li>\n <li class="twite__channel twite__channel--messengermobile twite__channel-click--messengermobile">\n <a class="twite__channel-link"href=\'fb-messenger://share?app_id=58567469885&amp;redirect_uri=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021&amp;link=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3FCMP%3Dshare_btn_me\' target=_blank rel=noopener>\n <span class="twite__icon twite__icon--messengermobile" data-platform="messengermobile"></span>\n <p class="twite__channel-text" aria-hidden="true">Messenger</p>\n <span class="off-screen">Share this with Messenger</span>\n </a>\n </li>\n <li class="twite__channel twite__channel--twitter twite__channel-click--twitter">\n <a class="twite__channel-link"onclick="window.open(\'https://twitter.com/intent/tweet?text=BBC%20News%20-%20An%20hour%20to%20catch%20the%20coding%20bug&amp;url=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021\' \'_blank\' \'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=550 height=250\').opener = null" href=\'#\' class=shortenUrl data-social-url=https://twitter.com/intent/tweet?text=BBC+News+-+An+hour+to+catch+the+coding+bug&amp;amp;url= data-target-url=https://www.bbc.com/news/technology-26415021>\n <span class="twite__icon twite__icon--twitter" data-platform="twitter"></span>\n <p class="twite__channel-text" aria-hidden="true">Twitter</p>\n <span class="off-screen">Share this with Twitter</span>\n </a>\n </li>\n <li class="twite__channel twite__channel--pinterest twite__channel-click--pinterest">\n <a class="twite__channel-link"onclick="window.open(\'https://uk.pinterest.com/pin/create/bookmarklet/?url=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021&amp;description=Is%20it%20possible%20to%20get%20children%20interested%20in%20computer%20programming%20in%20just%2060%20minutes%3F%20The%20Hour%20of%20Code%20has%20been%20designed%20to%20do%20just%20that.&amp;title=An%20hour%20to%20catch%20the%20coding%20bug&amp;media=https%3A%2F%2Fnews.bbcimg.co.uk%2Fmedia%2Fimages%2F73325000%2Fjpg%2F_73325451_hourofcode.jpg\' \'_blank\' \'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=750 height=675\').opener = null" href=\'#\' >\n <span class="twite__icon twite__icon--pinterest" data-platform="pinterest"></span>\n <p class="twite__channel-text" aria-hidden="true">Pinterest</p>\n <span class="off-screen">Share this with Pinterest</span>\n </a>\n </li>\n <li class="twite__channel twite__channel--whatsapp twite__channel-click--whatsapp">\n <a class="twite__channel-link"onclick="window.open(\'whatsapp://send?text=BBC%20News%20%7C%20An%20hour%20to%20catch%20the%20coding%20bug%20-%20https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3Focid%3Dwsnews.chat-apps.in-app-msg.whatsapp.trial.link1_.auin\' \'_blank\' \'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=600 height=600\').opener = null" href=\'#\' >\n <span class="twite__icon twite__icon--whatsapp" data-platform="whatsapp"></span>\n <p class="twite__channel-text" aria-hidden="true">WhatsApp</p>\n <span class="off-screen">Share this with WhatsApp</span>\n </a>\n </li>\n <li class="twite__channel twite__channel--linkedin twite__channel-click--linkedin">\n <a class="twite__channel-link"onclick="window.open(\'https://www.linkedin.com/shareArticle?mini=true&amp;url=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021&amp;title=An%20hour%20to%20catch%20the%20coding%20bug&amp;summary=Is%20it%20possible%20to%20get%20children%20interested%20in%20computer%20programming%20in%20just%2060%20minutes%3F%20The%20Hour%20of%20Code%20has%20been%20designed%20to%20do%20just%20that.&amp;source=BBC\' \'_blank\' \'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=550 height=500\').opener = null" href=\'#\' >\n <span class="twite__icon twite__icon--linkedin" data-platform="linkedin"></span>\n <p class="twite__channel-text" aria-hidden="true">LinkedIn</p>\n <span class="off-screen">Share this with LinkedIn</span>\n </a>\n </li>\n </ul>\n <p class="twite__copy-text">Copy this link</p>\n <div class="twite__copy-input">\n <a class="twite__share-link" href="https://www.bbc.com/news/technology-26415021" tabindex="-1" contenteditable="true">https://www.bbc.com/news/technology-26415021</a>\n </div>\n <a class="twite__read-more" href="https://www.bbc.co.uk/faqs/questions/bbc_online/sharing">Read more about sharing.</a>\n <p class="twite__new-window" aria-hidden="true">These are external links and will open in a new window</p>\n <button class="twite__close-button">\n <span class="off-screen">Close share panel</span>\n <div class="twite__close-button-graphic" aria-hidden="true"></div>\n </button>\n </div>\n </li>\n</ul>\n \n </div>\n </div>\n </div>\n <div id="topic-tags"><div id="u7025129578541964"><noscript></noscript></div></div> </div>\n </div>\n <div class="story-body__inner" property="articleBody">\n <figure class="media-landscape has-caption full-width lead">\n <span class="image-and-copyright-container">\n \n <img class="js-image-replace" alt="Child with computer" src="https://ichef.bbci.co.uk/news/320/media/images/73325000/jpg/_73325163_olly009.jpg" width="512" height="320">\n \n \n \n </span>\n \n <figcaption class="media-caption">\n <span class="off-screen">Image caption</span>\n <span class="media-caption__text">\n We did our Hour of Code on a lazy Sunday morning\n </span>\n </figcaption>\n \n </figure><p class="story-body__introduction">Okay 60 minutes and counting. Here we go.</p><p>I\'ve got an hour to convince my kids that programming is for them.</p><p>Well sort of.</p><p>I\'m putting my twin 10-year-old boys Toby and Callum through the Hour of Code - a campaign that seeks to ignite an interest in programming - the part we\'re doing using specially created web-based exercises. </p><p>The campaign begun in the US has landed in the UK where it also coincides with government calls for as many children as possible to get coding.</p><div id="bbccom_mpu_1_2_3" class="bbccom_slot mpu-ad" aria-hidden="true">\n <div class="bbccom_advert">\n <script type="text/javascript">\n /**/\n (function() {\n if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {\n bbcdotcom.adverts.slotAsync(\'mpu\' [1 2 3]);\n }\n })();\n /**/\n </script>\n </div>\n</div><p>Programming is being pushed because in an ever more technological world it can only be a good thing to give people a peep into what goes on behind the touch screen cash point and website. </p><p>The Hour of Code is supposed to be the start of that journey and I like many other parents feel it\'s one my children should be embarking on. I do feel like a clock somewhere is ticking and unless they get started with this essential skill they\'ll be left behind. </p><p>"In the future kids are going to be doing programming " said Callum when I asked him why it was worth learning how to code. "We need to learn so we can do stuff with the computer otherwise it will be a blank page and never work."</p><h2 class="story-body__crosshead">Zombie dance</h2><figure class="media-landscape has-caption full-width">\n <span class="image-and-copyright-container">\n \n \n <div class="js-delayed-image-load" data-alt="Screenshot from the hour of code" data-src="https://ichef.bbci.co.uk/news/320/media/images/73325000/jpg/_73325167_hourofcode.jpg" data-width="512" data-height="288"></div>\n \n \n <span class="off-screen">Image copyright</span>\n <span class="story-image-copyright">Code.org</span>\n \n </span>\n \n <figcaption class="media-caption">\n <span class="off-screen">Image caption</span>\n <span class="media-caption__text">\n The coding exercises involve familiar characters such as the Angry Birds\n </span>\n </figcaption>\n \n </figure><p>It\'s the getting started for both parents and their offspring that the Hour is intended to help with. I\'m probably like most parents in that I have no significant qualification in computer science. All I can offer my boys is a lifetime of tinkering backed up over the past 18 months with online courses in Python HTML CSS Javascript and the like. </p><p>There\'s good precedents for the value of something like the Hour of Code. I\'ve quizzed every chief technology officer (CTO) developer or IT worker I\'ve met in the past couple of weeks about what got them started and every one knew exactly the moment they got it. Their eyes lit up as they talked about typing in code listings from magazines working through every Dos command or designing their own blocky 8-bit game characters.</p><p>And finally at the back of my mind are all those statistics about the shortages of skilled IT staff and my hope that if this works then their future career options will be much wider than they would be without this skill.</p><p>So no pressure then.</p><p>Yesterday morning we gave it a go. I was keen for it to be fun rather than feel like school as there\'s nothing more likely to turn them off than for it to be sold as good for them. I think we struck the right note of informality - Cal did it in his onesie. </p><p>It went OK no better than that. Pretty good. We worked through all the exercises getting angry birds to mash pigs and zombies to chomp sunflowers. The coding is done by dragging blocks representing different commands into a work area and building the blocks into a tower of coherent instructions.</p><p>The block-building system is based on the Scratch programming language build by MIT\'s Mitch Resnick. </p><p>The exercises start easy - just getting an angry bird to hop on to a pig. By the end we were using "If… else" statements and loops to help a zombie navigate a tricky maze to reach the sunflower.</p><p>This went down well with Callum. "Cool! It\'s scanning for a path " he said as the zombie worked its way towards the hapless flower.</p><p>Mistakes were made but we learned from them we debated over which way to make the birds and zombies turn and the time went really fast. </p><p>Toby was surprised to find that this counted as programming.</p><p>"I thought coding was just a lot of people tapping in letter and numbers until they got it right " he said. </p><h2 class="story-body__crosshead">Next steps</h2><p>And yet I felt it was a bit too easy. I wanted to make the coding connection to real life more tangible. So as we had about 15 minutes of our Hour of Code left we went further.</p><p>This time we used the MIT App Inventor to build a basic program that would run on the tablets they own. </p><p>The app inventor uses the same "drag the block" method to build a program and following the instructions we had soon created an app that turned anything typed in text into speech. </p><figure class="media-landscape has-caption body-narrow-width">\n <span class="image-and-copyright-container">\n \n \n <div class="js-delayed-image-load" data-alt="Screenshot from MIT App Inventor" data-src="https://ichef.bbci.co.uk/news/320/media/images/73325000/jpg/_73325169_appinventor.jpg" data-width="448" data-height="287"></div>\n \n \n <span class="off-screen">Image copyright</span>\n <span class="story-image-copyright">MIT</span>\n \n </span>\n \n <figcaption class="media-caption">\n <span class="off-screen">Image caption</span>\n <span class="media-caption__text">\n The App Inventor uses the same block dragging system as the Hour of Code exercises\n </span>\n </figcaption>\n \n </figure><p>We got it working on Cal\'s tablet and soon they were getting that gadget to call out lots of phrases. Almost inevitably as they are 10 years old a lot of these phrases involved the words "willy" and "bum". </p><p>But they had a lot of fun with it and it brought home to them how straight-forward coding can be. In just over an hour they went from being pretty much novices to creating an Android app - a basic one that trades on the expertise of the people that built the coding tools but it was an accomplishment nonetheless.</p><p>Did they catch the coding bug as a result? </p><p>Maybe later in the day they were programming each other after one of their regular wrestling matches left Toby lying exhausted on the floor. Suddenly Cal called out commands such as "roll left" and Toby started obeying even to the point of crashing into the sofa when too many roll commands were given. </p><p>Then Toby had his turn and did the same they even worked out that they had to compensate for the changes in left and right as they rolled. </p><p>So I think that hour started something. Both with them and with me. Building that Android app made me realise that it is straight-forward. That my lack of formal qualifications do not matter as much as I thought. And maybe that\'s the point of the hour. Making people realise that it is not scary and difficult. You just have to find an hour and give it a try. You can even do it in your onesie.</p>\n </div>\n</div>\n <div id="topic-tags"><div id="u6029117538128048"><noscript></noscript></div></div>\n <div class="share share--lightweight show ghost-column">\n <div id="share-tools"></div>\n <h2 class="share__title share__title--lightweight">\n Share this story <a href="http://www.bbc.co.uk/help/web/sharing.shtml">About&nbsp;sharing</a>\n </h2>\n <ul class="share__tools share__tools--lightweight">\n <li class="share__tool share__tool--email">\n <a href="mailto:?subject=Shared%20from%20BBC%20News&body=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021" >\n <span>Email</span>\n </a>\n </li>\n <li class="share__tool share__tool--facebook">\n <a href="http://www.facebook.com/dialog/feed?app_id=58567469885&redirect_uri=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021&link=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3FSThisFB&display=popup" >\n <span>Facebook</span>\n </a>\n </li>\n <li class="share__tool share__tool--messengerdesktop">\n <a href="http://www.facebook.com/dialog/send?app_id=58567469885&redirect_uri=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021&link=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3FSThisFB&display=popup" >\n <span>Messenger</span>\n </a>\n </li>\n <li class="share__tool share__tool--messengermobile">\n <a href="fb-messenger://share?app_id=58567469885&redirect_uri=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021&link=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3FCMP%3Dshare_btn_me" target=_blank rel=noopener>\n <span>Messenger</span>\n </a>\n </li>\n <li class="share__tool share__tool--twitter">\n <a href="https://twitter.com/intent/tweet?text=BBC%20News%20-%20An%20hour%20to%20catch%20the%20coding%20bug&url=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021" class=shortenUrl data-social-url=https://twitter.com/intent/tweet?text=BBC+News+-+An+hour+to+catch+the+coding+bug&amp;url= data-target-url=https://www.bbc.com/news/technology-26415021>\n <span>Twitter</span>\n </a>\n </li>\n <li class="share__tool share__tool--pinterest">\n <a href="https://uk.pinterest.com/pin/create/bookmarklet/?url=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021&description=Is%20it%20possible%20to%20get%20children%20interested%20in%20computer%20programming%20in%20just%2060%20minutes%3F%20The%20Hour%20of%20Code%20has%20been%20designed%20to%20do%20just%20that.&title=An%20hour%20to%20catch%20the%20coding%20bug&media=https%3A%2F%2Fwww.bbc.co.uk%2Fnews%2Fspecial%2F2015%2Fnewsspec_10857%2Fbbc_news_logo.png%3Fcb%3D1" >\n <span>Pinterest</span>\n </a>\n </li>\n <li class="share__tool share__tool--whatsapp">\n <a href="whatsapp://send?text=BBC%20News%20%7C%20An%20hour%20to%20catch%20the%20coding%20bug%20-%20https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3Focid%3Dwsnews.chat-apps.in-app-msg.whatsapp.trial.link1_.auin" >\n <span>WhatsApp</span>\n </a>\n </li>\n <li class="share__tool share__tool--linkedin">\n <a href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021&title=An%20hour%20to%20catch%20the%20coding%20bug&summary=Is%20it%20possible%20to%20get%20children%20interested%20in%20computer%20programming%20in%20just%2060%20minutes%3F%20The%20Hour%20of%20Code%20has%20been%20designed%20to%20do%20just%20that.&source=BBC" >\n <span>LinkedIn</span>\n </a>\n </li>\n </ul>\n</div>\n <div class="story-more">\n <div class="group story-alsos more-on-this-story"> <div class="group__header"> <h2 class="group__title">More on this story</h2> </div> <div class="group__body"> <ul class="units-list "> <li class="unit unit--regular" data-entityid="more-on-this-story#1" > <a href="/news/av/education-25648769/computer-coding-taught-in-estonian-primary-schools" class="unit__link-wrapper"> <div class="unit__body"> <div class="unit__header"> <div class="unit__title"> \n <span class="icon-new icon-new--video-square-red"><span class="off-screen"> Video</span></span>\n \n \n <span class="cta"> Computer coding taught in Estonian primary schools </span> </div> <div class="unit__meta"> <div class="date date--v1" data-seconds="1389169705" data-datetime="8 January 2014">8 January 2014</div> </div> </div> </div> </a> </li> <li class="unit unit--regular" data-entityid="more-on-this-story#2" > <a href="/news/technology-26150717" class="unit__link-wrapper"> <div class="unit__body"> <div class="unit__header"> <div class="unit__title"> <span class="cta"> Year of Code - PR fiasco or vital mission? </span> </div> <div class="unit__meta"> <div class="date date--v1" data-seconds="1392196197" data-datetime="12 February 2014">12 February 2014</div> </div> </div> </div> </a> </li> <li class="unit unit--regular" data-entityid="more-on-this-story#3" > <a href="/news/technology-25857276" class="unit__link-wrapper"> <div class="unit__body"> <div class="unit__header"> <div class="unit__title"> <span class="cta"> Are teachers ready for the coding revolution? </span> </div> <div class="unit__meta"> <div class="date date--v1" data-seconds="1390468159" data-datetime="23 January 2014">23 January 2014</div> </div> </div> </div> </a> </li> </ul> </div> </div> </div>\n \n<div class="story-more">\n <div class="group related-links--external more-on-this-story"> <div class="group__header"> <h2 class="group__title">Related Internet links</h2> </div> <div class="group__body"> <ul class="units-list "> <li class="unit unit--headline" data-entityid="more-on-this-story#1" > <div class="unit__body"> <div class="unit__header"> <a class="unit__link-wrapper" href="http://uk.code.org/"> <div class="unit__title"> <span class="cta">UK Hour of Code</span> </div> </a> </div> </div> </li> <li class="unit unit--headline" data-entityid="more-on-this-story#2" > <div class="unit__body"> <div class="unit__header"> <a class="unit__link-wrapper" href="http://appinventor.mit.edu/explore/"> <div class="unit__title"> <span class="cta">MIT App Inventor</span> </div> </a> </div> </div> </li> <li class="unit unit--headline" data-entityid="more-on-this-story#3" > <div class="unit__body"> <div class="unit__header"> <a class="unit__link-wrapper" href="http://scratch.mit.edu/"> <div class="unit__title"> <span class="cta">MIT Scratch</span> </div> </a> </div> </div> </li> </ul> </div> </div> \n <p class="unit__meta">The BBC is not responsible for the content of external Internet sites</p>\n</div>\n <div id=comp-pattern-library-7\n class="hidden"\n data-post-load-url="/news/pattern-library-components?options%5BassetId%5D=26415021&amp;options%5Bcontainer_class%5D=container-more-from-this-index&amp;options%5Bdata%5D%5Bsource%5D=candy_parent_index&amp;options%5Bdata%5D%5Bsource_params%5D%5Bsection_title%5D=1&amp;options%5Bcomponents%5D%5B0%5D%5Bname%5D=sparrow&amp;options%5Bcomponents%5D%5B0%5D%5Blimit%5D=3&amp;options%5Bloading_strategy%5D=post_load&amp;options%5Bstats%5D%5Blink_location%5D=more-section-index&amp;options%5Bstats%5D%5Bstrapline_link_location%5D=more-from-this-index-headline&amp;options%5Bstats%5D%5Bsection_label%5D=more-from-this-index-section-label&amp;options%5Basset_id%5D=technology-26415021&amp;presenter=pattern-library-presenter">\n </div> <div id=comp-from-other-news-sites\n class="hidden"\n data-comp-meta="{&quot;id&quot;:&quot;comp-from-other-news-sites&quot; &quot;type&quot;:&quot;from-other-news-sites&quot; &quot;handler&quot;:&quot;default&quot; &quot;deviceGroups&quot;:null &quot;opts&quot;:{&quot;assetId&quot;:&quot;26415021&quot; &quot;conditions&quot;:[&quot;is_local_page&quot;] &quot;loading_strategy&quot;:&quot;post_load&quot; &quot;asset_id&quot;:&quot;technology-26415021&quot; &quot;position_info&quot;:{&quot;instanceNo&quot;:1 &quot;positionInRegion&quot;:7 &quot;lastInRegion&quot;:true &quot;lastOnPage&quot;:false &quot;column&quot;:&quot;primary_column&quot;}} &quot;template&quot;:&quot;\\/component\\/from-other-news-sites&quot;}">\n </div> \n<div id="bbccom_outbrain_ar_5_1_2_3_4" class="bbccom_slot outbrain-ad" aria-hidden="true">\n <div class="bbccom_advert">\n <script type="text/javascript">\n /*<![CDATA[*/\n (function() {\n if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {\n bbcdotcom.adverts.slotAsync(\'outbrain_ar_5\' [1 2 3 4]);\n }\n })();\n /*]]>*/\n </script>\n </div>\n</div>\n<div id="bbccom_outbrain_ar_7_1_2_3_4" class="bbccom_slot outbrain-ad" aria-hidden="true">\n <div class="bbccom_advert">\n <script type="text/javascript">\n /*<![CDATA[*/\n (function() {\n if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {\n bbcdotcom.adverts.slotAsync(\'outbrain_ar_7\' [1 2 3 4]);\n }\n })();\n /*]]>*/\n </script>\n </div>\n</div>\n<div id="bbccom_outbrain_ar_8_1_2_3_4" class="bbccom_slot outbrain-ad" aria-hidden="true">\n <div class="bbccom_advert">\n <script type="text/javascript">\n /*<![CDATA[*/\n (function() {\n if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {\n bbcdotcom.adverts.slotAsync(\'outbrain_ar_8\' [1 2 3 4]);\n }\n })();\n /*]]>*/\n </script>\n </div>\n</div>\n<div id="bbccom_outbrain_ar_9_3_4" class="bbccom_slot outbrain-ad" aria-hidden="true">\n <div class="bbccom_advert">\n <script type="text/javascript">\n /*<![CDATA[*/\n (function() {\n if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {\n bbcdotcom.adverts.slotAsync(\'outbrain_ar_9\' [3 4]);\n }\n })();\n /*]]>*/\n </script>\n </div>\n</div>\n </div>\n <div class="column--secondary" role="complementary">\n <div id="comp-top-stories-promo" class="top-stories-promo">\n <h2 class="top-stories-promo__title">Top Stories</h2>\n <a href="/news/world-middle-east-50698017" class="top-stories-promo-story" data-asset-id="/news/world-middle-east-50698017"data-entityid="top-stories#1">\n <strong class="top-stories-promo-story__title">US and Iranian men released in prisoner swap</strong>\n <p class="top-stories-promo-story__summary top-stories-promo-story__summary--none">Xiyue Wang was jailed in Iran in 2016 while Massoud Soleimani was arrested at a US airport last year.</p>\n <div class="date date--v2" data-seconds="1575742455" data-datetime="7 December 2019">7 December 2019</div>\n </a>\n <a href="/news/science-environment-50690995" class="top-stories-promo-story" data-asset-id="/news/science-environment-50690995"data-entityid="top-stories#3">\n <strong class="top-stories-promo-story__title">Oceans running out of oxygen say scientists</strong>\n <div class="date date--v2" data-seconds="1575713875" data-datetime="7 December 2019">7 December 2019</div>\n </a>\n <a href="/news/world-asia-india-50697139" class="top-stories-promo-story" data-asset-id="/news/world-asia-india-50697139"data-entityid="top-stories#5">\n <strong class="top-stories-promo-story__title">Woman set on fire on way to rape hearing dies</strong>\n <div class="date date--v2" data-seconds="1575697804" data-datetime="7 December 2019">7 December 2019</div>\n </a>\n </div> \n<div id="bbccom_mpu_4" class="bbccom_slot mpu-ad" aria-hidden="true">\n <div class="bbccom_advert">\n <script type="text/javascript">\n /*<![CDATA[*/\n (function() {\n if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {\n bbcdotcom.adverts.slotAsync(\'mpu\' [4]);\n }\n })();\n /*]]>*/\n </script>\n </div>\n</div>\n \n<div class="features-and-analysis" id="comp-features-and-analysis" >\n <h2 class="features-and-analysis__title">\n \n Features\n </h2>\n <div class="features-and-analysis__stories promo-unit-spacer">\n \n <div class="features-and-analysis__story" data-entityid="features-and-analysis#1">\n <a href="https://www.bbc.co.uk/news/extra/NNdZwVPPgP/300-seconds-on-london-bridge" class="bold-image-promo">\n <div class="bold-image-promo__image">\n <div class="responsive-image responsive-image--16by9">\n \n <div class="js-delayed-image-load" data-src="https://ichef.bbci.co.uk/news/304/cpsprodpb/A003/production/_110036904_lodon_briddge_attack_superpromo_976.jpg" data-width="976" data-height="549" data-alt="Illustration of London Bridge attack"></div>\n <!--[if lt IE 9]>\n <img src="https://ichef.bbci.co.uk/news/304/cpsprodpb/A003/production/_110036904_lodon_briddge_attack_superpromo_976.jpg" class="js-image-replace" alt="Illustration of London Bridge attack" width="976" height="549" />\n <![endif]-->\n \n </div>\n </div>\n <h3 class="bold-image-promo__title">300 seconds at London Bridge</h3>\n \n </a>\n </div>\n \n \n <div class="features-and-analysis__story" data-entityid="features-and-analysis#2">\n <a href="/news/world-europe-50672007" class="bold-image-promo">\n <div class="bold-image-promo__image">\n <div class="responsive-image responsive-image--16by9">\n \n <div class="js-delayed-image-load" data-src="https://ichef.bbci.co.uk/news/304/cpsprodpb/029F/production/_110017600_gettyimages-1186404161.jpg" data-width="976" data-height="549" data-alt="UK Prime Minister Boris Johnson shakes hands with US President Donald Trump during the annual Nato heads of government summit in Watford England 4 December 2019"></div>\n <!--[if lt IE 9]>\n <img src="https://ichef.bbci.co.uk/news/304/cpsprodpb/029F/production/_110017600_gettyimages-1186404161.jpg" class="js-image-replace" alt="UK Prime Minister Boris Johnson shakes hands with US President Donald Trump during the annual Nato heads of government summit in Watford England 4 December 2019" width="976" height="549" />\n <![endif]-->\n \n </div>\n </div>\n <h3 class="bold-image-promo__title">Divisive UK election campaign reaches climax</h3>\n \n </a>\n </div>\n \n \n <div class="features-and-analysis__story" data-entityid="features-and-analysis#3">\n <a href="/news/av/world-us-canada-50665856/how-us-law-professors-teach-impeachment" class="bold-image-promo">\n <div class="bold-image-promo__image">\n <div class="responsive-image responsive-image--16by9">\n <div class="responsive-image__inner-for-label"><!-- closed in responsive-image-end -->\n <div class="js-delayed-image-load" data-src="https://ichef.bbci.co.uk/news/304/cpsprodpb/AD74/production/_110040444_p07x5qgq.jpg" data-width="976" data-height="549" data-alt="Professor"></div>\n <!--[if lt IE 9]>\n <img src="https://ichef.bbci.co.uk/news/304/cpsprodpb/AD74/production/_110040444_p07x5qgq.jpg" class="js-image-replace" alt="Professor" width="976" height="549" />\n <![endif]-->\n <div class="responsive-image__label" aria-hidden="true">\n <span class="icon video"><span class="off-screen"> Video</span></span>\n \n \n \n </div>\n <!-- opened in responsive-image-start --></div>\n </div>\n </div>\n <h3 class="bold-image-promo__title">How US law professors teach impeachment</h3>\n \n </a>\n </div>\n \n<div id="bbccom_infeed_news_story_1_2_3_4_5" class="bbccom_slot infeednewsstory-ad" aria-hidden="true">\n <div class="bbccom_advert">\n <script type="text/javascript">\n /*<![CDATA[*/\n (function() {\n if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {\n bbcdotcom.adverts.slotAsync(\'infeed_news_story\' [1 2 3 4 5]);\n }\n })();\n /*]]>*/\n </script>\n </div>\n</div>\n \n <div class="features-and-analysis__story" data-entityid="features-and-analysis#4">\n <a href="/news/health-50346131" class="bold-image-promo">\n <div class="bold-image-promo__image">\n <div class="responsive-image responsive-image--16by9">\n \n <div class="js-delayed-image-load" data-src="https://ichef.bbci.co.uk/news/304/cpsprodpb/B2C6/production/_109666754_exercise1.jpg" data-width="976" data-height="549" data-alt="Valerie Stephan"></div>\n <!--[if lt IE 9]>\n <img src="https://ichef.bbci.co.uk/news/304/cpsprodpb/B2C6/production/_109666754_exercise1.jpg" class="js-image-replace" alt="Valerie Stephan" width="976" height="549" />\n <![endif]-->\n \n </div>\n </div>\n <h3 class="bold-image-promo__title">\'I was addicted to exercise\'</h3>\n \n </a>\n </div>\n \n \n <div class="features-and-analysis__story" data-entityid="features-and-analysis#5">\n <a href="/news/science-environment-50602971" class="bold-image-promo">\n <div class="bold-image-promo__image">\n <div class="responsive-image responsive-image--16by9">\n \n <div class="js-delayed-image-load" data-src="https://ichef.bbci.co.uk/news/304/cpsprodpb/A863/production/_109970134_floods_fires_getty.jpg" data-width="976" data-height="549" data-alt="Floods in east Africa and fires in Australia"></div>\n <!--[if lt IE 9]>\n <img src="https://ichef.bbci.co.uk/news/304/cpsprodpb/A863/production/_109970134_floods_fires_getty.jpg" class="js-image-replace" alt="Floods in east Africa and fires in Australia" width="976" height="549" />\n <![endif]-->\n \n </div>\n </div>\n <h3 class="bold-image-promo__title">The climate phenomenon linking floods and bushfires</h3>\n \n </a>\n </div>\n \n \n <div class="features-and-analysis__story" data-entityid="features-and-analysis#6">\n <a href="/news/world-50688435" class="bold-image-promo">\n <div class="bold-image-promo__image">\n <div class="responsive-image responsive-image--16by9">\n \n <div class="js-delayed-image-load" data-src="https://ichef.bbci.co.uk/news/304/cpsprodpb/6D9F/production/_110036082_india_banner.jpg" data-width="1024" data-height="576" data-alt="Protest banner"></div>\n <!--[if lt IE 9]>\n <img src="https://ichef.bbci.co.uk/news/304/cpsprodpb/6D9F/production/_110036082_india_banner.jpg" class="js-image-replace" alt="Protest banner" width="1024" height="576" />\n <![endif]-->\n \n </div>\n </div>\n <h3 class="bold-image-promo__title">The struggle for justice for India\'s rape victims</h3>\n \n </a>\n </div>\n \n \n <div class="features-and-analysis__story" data-entityid="features-and-analysis#7">\n <a href="/news/av/world-africa-50679143/i-bring-explosions-of-colour-to-public-spaces" class="bold-image-promo">\n <div class="bold-image-promo__image">\n <div class="responsive-image responsive-image--16by9">\n <div class="responsive-image__inner-for-label"><!-- closed in responsive-image-end -->\n <div class="js-delayed-image-load" data-src="https://ichef.bbci.co.uk/news/304/cpsprodpb/421A/production/_110022961_p07x1l00.jpg" data-width="1024" data-height="576" data-alt="Artist Yinka Ilori"></div>\n <!--[if lt IE 9]>\n <img src="https://ichef.bbci.co.uk/news/304/cpsprodpb/421A/production/_110022961_p07x1l00.jpg" class="js-image-replace" alt="Artist Yinka Ilori" width="1024" height="576" />\n <![endif]-->\n <div class="responsive-image__label" aria-hidden="true">\n <span class="icon video"><span class="off-screen"> Video</span></span>\n \n \n \n </div>\n <!-- opened in responsive-image-start --></div>\n </div>\n </div>\n <h3 class="bold-image-promo__title">\'I bring explosions of colour to public spaces\'</h3>\n \n </a>\n </div>\n \n \n <div class="features-and-analysis__story" data-entityid="features-and-analysis#8">\n <a href="/news/world-africa-50689205" class="bold-image-promo">\n <div class="bold-image-promo__image">\n <div class="responsive-image responsive-image--16by9">\n \n <div class="js-delayed-image-load" data-src="https://ichef.bbci.co.uk/news/304/cpsprodpb/35A5/production/_110033731_gettyimages-1157839697.jpg" data-width="976" data-height="549" data-alt="Sho Madjozi"></div>\n <!--[if lt IE 9]>\n <img src="https://ichef.bbci.co.uk/news/304/cpsprodpb/35A5/production/_110033731_gettyimages-1157839697.jpg" class="js-image-replace" alt="Sho Madjozi" width="976" height="549" />\n <![endif]-->\n \n </div>\n </div>\n <h3 class="bold-image-promo__title">Five African music stars to look out for</h3>\n \n </a>\n </div>\n \n \n <div class="features-and-analysis__story" data-entityid="features-and-analysis#9">\n <a href="https://www.bbc.com/reel/video/p07wsv3j/a-dangerous-dive-into-a-medieval-mystery" class="bold-image-promo">\n <div class="bold-image-promo__image">\n <div class="responsive-image responsive-image--16by9">\n \n <div class="js-delayed-image-load" data-src="https://ichef.bbci.co.uk/news/304/cpsprodpb/E879/production/_110031595_screenshot2019-12-06at10.38.23.png" data-width="812" data-height="457" data-alt="The Fosse Dionne spring in Tonnerre France"></div>\n <!--[if lt IE 9]>\n <img src="https://ichef.bbci.co.uk/news/304/cpsprodpb/E879/production/_110031595_screenshot2019-12-06at10.38.23.png" class="js-image-replace" alt="The Fosse Dionne spring in Tonnerre France" width="812" height="457" />\n <![endif]-->\n \n </div>\n </div>\n <h3 class="bold-image-promo__title">A dangerous dive into a medieval mystery</h3>\n \n </a>\n </div>\n \n </div>\n</div>\n \n<div id="bbccom_native_1_2_3_4" class="bbccom_slot native-ad" >\n <div class="bbccom_advert">\n <script type="text/javascript">\n /*<![CDATA[*/\n (function() {\n if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {\n bbcdotcom.adverts.slotAsync(\'native\' [1 2 3 4]);\n }\n })();\n /*]]>*/\n </script>\n </div>\n</div>\n \n <div id="comp-elsewhere-on-the-bbc" class="distinct-component-group container-heron">\n \n <h2 class="group-title " data-entityid="#elsewhere_on_the_bbc">\n \n Elsewhere on the BBC\n</h2>\n<div class="heron">\n <div class="heron__item faux-block-link" data-entityid="hyper-promotional-content#1">\n <div class="heron__item-image">\n <div class="responsive-image responsive-image--16by9">\n \n <div class="js-delayed-image-load" data-src="https://ichef.bbci.co.uk/news/200/cpsprodpb/1343E/production/_102501987_lyrics-quiz.jpg" data-width="624" data-height="351" data-alt="Michael Stipe Jimmi Hendrix and Taylor Swift - lyrics quiz image"></div>\n <!--[if lt IE 9]>\n <img src="https://ichef.bbci.co.uk/news/200/cpsprodpb/1343E/production/_102501987_lyrics-quiz.jpg" class="js-image-replace" alt="Michael Stipe Jimmi Hendrix and Taylor Swift - lyrics quiz image" width="624" height="351" />\n <![endif]-->\n \n </div>\n </div>\n <div class="heron__item-body">\n <a href="https://www.bbc.co.uk/music/articles/d37a03cb-41e5-43c8-b88d-8e1f59fd9998?intc_type=promo&amp;intc_location=news&amp;intc_campaign=misheardlyrics_quiz&amp;intc_linkname=bbcmusic_rm_low_c3" class="title-link">\n \n <h3 class="title-link__title">\n \n <span class="title-link__title-text">Lyrics quiz</span>\n </h3>\n </a> <p class="heron__item-summary">Have you been getting these songs wrong?</p>\n </div>\n <a href="https://www.bbc.co.uk/music/articles/d37a03cb-41e5-43c8-b88d-8e1f59fd9998?intc_type=promo&amp;intc_location=news&amp;intc_campaign=misheardlyrics_quiz&amp;intc_linkname=bbcmusic_rm_low_c3" class="faux-block-link__overlay-link" tabindex="-1" aria-hidden="true">Full article Lyrics quiz</a>\n </div>\n <div class="heron__item faux-block-link" data-entityid="hyper-promotional-content#2">\n <div class="heron__item-image">\n <div class="responsive-image responsive-image--16by9">\n \n <div class="js-delayed-image-load" data-src="https://ichef.bbci.co.uk/news/200/cpsprodpb/1386C/production/_102408997_extreme-heat.jpg" data-width="624" data-height="351" data-alt="extreme heat image"></div>\n <!--[if lt IE 9]>\n <img src="https://ichef.bbci.co.uk/news/200/cpsprodpb/1386C/production/_102408997_extreme-heat.jpg" class="js-image-replace" alt="extreme heat image" width="624" height="351" />\n <![endif]-->\n \n </div>\n </div>\n <div class="heron__item-body">\n <a href="https://www.bbc.co.uk/bbcthree/article/063dba1d-2ab2-40e3-9837-3d70481ef82c?intc_type=promo&amp;intc_location=news&amp;intc_campaign=whathappenstoyourbodyinheat_article&amp;intc_linkname=bbcthree_yc_low_c3" class="title-link">\n \n <h3 class="title-link__title">\n \n <span class="title-link__title-text">Feeling hot</span>\n </h3>\n </a> <p class="heron__item-summary">What happens to your body in extreme heat?</p>\n </div>\n <a href="https://www.bbc.co.uk/bbcthree/article/063dba1d-2ab2-40e3-9837-3d70481ef82c?intc_type=promo&amp;intc_location=news&amp;intc_campaign=whathappenstoyourbodyinheat_article&amp;intc_linkname=bbcthree_yc_low_c3" class="faux-block-link__overlay-link" tabindex="-1" aria-hidden="true">Full article Feeling hot</a>\n </div>\n</div>\n \n </div>\n <div id=comp-most-popular\n class="hidden"\n data-comp-meta="{&quot;id&quot;:&quot;comp-most-popular&quot; &quot;type&quot;:&quot;most-popular&quot; &quot;handler&quot;:&quot;mostPopular&quot; &quot;deviceGroups&quot;:null &quot;opts&quot;:{&quot;assetId&quot;:&quot;26415021&quot; &quot;loading_strategy&quot;:&quot;post_load&quot; &quot;position_info&quot;:{&quot;instanceNo&quot;:1 &quot;positionInRegion&quot;:4 &quot;lastInRegion&quot;:true &quot;lastOnPage&quot;:false &quot;column&quot;:&quot;secondary_column&quot;}}}">\n </div> \n<div id="bbccom_mpu_bottom_1_2_3_4" class="bbccom_slot mpu-bottom-ad" aria-hidden="true">\n <div class="bbccom_advert">\n <script type="text/javascript">\n /*<![CDATA[*/\n (function() {\n if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {\n bbcdotcom.adverts.slotAsync(\'mpu_bottom\' [1 2 3 4]);\n }\n })();\n /*]]>*/\n </script>\n </div>\n</div>\n<div id="bbccom_outbrain_ar_9_1_2" class="bbccom_slot outbrain-ad" aria-hidden="true">\n <div class="bbccom_advert">\n <script type="text/javascript">\n /*<![CDATA[*/\n (function() {\n if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {\n bbcdotcom.adverts.slotAsync(\'outbrain_ar_9\' [1 2]);\n }\n })();\n /*]]>*/\n </script>\n </div>\n</div>\n<div id="bbccom_adsense_1_2_3_4" class="bbccom_slot adsense-ad" aria-hidden="true">\n <div class="bbccom_advert">\n <script type="text/javascript">\n /*<![CDATA[*/\n (function() {\n if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {\n bbcdotcom.adverts.slotAsync(\'adsense\' [1 2 3 4]);\n }\n })();\n /*]]>*/\n </script>\n </div>\n</div>\n<div id="bbccom_inread_1_2_3_4" class="bbccom_slot inread" aria-hidden="true">\n <div class="bbccom_advert">\n <script type="text/javascript">\n /*<![CDATA[*/\n (function() {\n if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {\n bbcdotcom.adverts.slotAsync(\'inread\' [1 2 3 4]);\n }\n })();\n /*]]>*/\n </script>\n </div>\n</div>\n </div>\n </div> </div> </div> <div class="page__foot">\n <div class="trust-project">\n <div class="trust-project__inner">\n <a href="https://www.bbc.co.uk/news/help-41670342" class="trust-project__link"><span class="svg-icon--24 svg-icon--info-caption" data-grunticon-embed></span><span class="trust-project__link-text">Why you can trust BBC News</span></a>\n </div>\n</div> </div>\n </div> \n \n<div id="core-navigation" class="navigation--footer">\n <h2 class="navigation--footer__heading">BBC News Navigation</h2>\n \n <nav id="navigation--bottom" class="navigation navigation--bottom " role="navigation" aria-label="BBC News">\n <span class="navigation-core-title">Sections</span>\n <ul class="navigation--bottom__toplevel">\n <li class="">\n <a href="/news" class="">\n <span>Home</span>\n </a>\n </li>\n <li class="">\n <a href="/news/video_and_audio/headlines" class="">\n <span>Video</span>\n </a>\n </li>\n <li class="">\n <a href="/news/world" data-panel-id="js-navigation-panel-World" class="navigation-arrow">\n <span>World</span>\n </a>\n <div class="navigation-panel navigation-panel--closed js-navigation-panel-World">\n <div class="navigation-panel__content">\n <ul class="navigation-panel-secondary">\n <li><a href="/news/world"><span>World Home</span></a></li>\n <li>\n <a href="/news/world/africa"><span>Africa</span></a> </li>\n <li>\n <a href="/news/world/asia"><span>Asia</span></a> </li>\n <li>\n <a href="/news/world/australia"><span>Australia</span></a> </li>\n <li>\n <a href="/news/world/europe"><span>Europe</span></a> </li>\n <li>\n <a href="/news/world/latin_america"><span>Latin America</span></a> </li>\n <li>\n <a href="/news/world/middle_east"><span>Middle East</span></a> </li>\n <li>\n <a href="/news/world/us_and_canada"><span>US &amp; Canada</span></a> </li>\n </ul>\n </div>\n </div>\n </li>\n <li class="">\n <a href="/news/uk" data-panel-id="js-navigation-panel-UK" class="navigation-arrow">\n <span>UK</span>\n </a>\n <div class="navigation-panel navigation-panel--closed js-navigation-panel-UK">\n <div class="navigation-panel__content">\n <ul class="navigation-panel-secondary">\n <li><a href="/news/uk"><span>UK Home</span></a></li>\n <li>\n <a href="/news/england"><span>England</span></a> </li>\n <li>\n <a href="/news/northern_ireland"><span>N. Ireland</span></a> </li>\n <li>\n <a href="/news/scotland"><span>Scotland</span></a> </li>\n <li>\n <a href="/news/wales"><span>Wales</span></a> </li>\n <li>\n <a href="/news/election/2019"><span>Election 2019</span></a> </li>\n </ul>\n </div>\n </div>\n </li>\n <li class="">\n <a href="/news/business" data-panel-id="js-navigation-panel-Business" class="navigation-arrow">\n <span>Business</span>\n </a>\n <div class="navigation-panel navigation-panel--closed js-navigation-panel-Business">\n <div class="navigation-panel__content">\n <ul class="navigation-panel-secondary">\n <li><a href="/news/business"><span>Business Home</span></a></li>\n <li>\n <a href="/news/business/market-data"><span>Market Data</span></a> </li>\n <li>\n <a href="/news/business-38507481"><span>Global Trade</span></a> </li>\n <li>\n <a href="/news/business/companies"><span>Companies</span></a> </li>\n <li>\n <a href="/news/business-22434141"><span>Entrepreneurship</span></a> </li>\n <li>\n <a href="/news/business-11428889"><span>Technology of Business</span></a> </li>\n <li>\n <a href="/news/business-45489065"><span>Connected World</span></a> </li>\n <li>\n <a href="/news/business-12686570"><span>Global Education</span></a> </li>\n <li>\n <a href="/news/business/economy"><span>Economy</span></a> </li>\n </ul>\n </div>\n </div>\n </li>\n <li class="selected ">\n <a href="/news/technology" class="navigation-arrow--open">\n <span>Tech</span>\n </a>\n <span class="off-screen">selected</span> </li>\n <li class="">\n <a href="/news/science_and_environment" class="">\n <span>Science</span>\n </a>\n </li>\n <li class="">\n <a href="/news/stories" class="">\n <span>Stories</span>\n </a>\n </li>\n <li class="">\n <a href="/news/entertainment_and_arts" class="">\n <span>Entertainment &amp; Arts</span>\n </a>\n </li>\n <li class="">\n <a href="/news/health" class="">\n <span>Health</span>\n </a>\n </li>\n <li class="">\n <a href="/news/world_radio_and_tv" class="">\n <span>World News TV</span>\n </a>\n </li>\n <li class="">\n <a href="/news/in_pictures" class="">\n <span>In Pictures</span>\n </a>\n </li>\n <li class="">\n <a href="/realitycheck" class="">\n <span>Reality Check</span>\n </a>\n </li>\n <li class="">\n <a href="/news/newsbeat" class="">\n <span>Newsbeat</span>\n </a>\n </li>\n <li class="">\n <a href="/news/special_reports" class="">\n <span>Special Reports</span>\n </a>\n </li>\n <li class="">\n <a href="/news/explainers" class="">\n <span>Explainers</span>\n </a>\n </li>\n <li class="">\n <a href="/news/the_reporters" class="">\n <span>The Reporters</span>\n </a>\n </li>\n <li class="">\n <a href="/news/have_your_say" class="">\n <span>Have Your Say</span>\n </a>\n </li>\n </ul>\n </nav>\n</div> \n <div id="comp-pattern-library-2" class="distinct-component-group ">\n \n <div id="bbc-news-services" class="blue-tit" role="navigation" aria-label="BBC News Services">\n <div class="blue-tit__inner">\n <h2 class="blue-tit__title">BBC News Services</h2>\n <ul class="blue-tit__list">\n <li class="blue-tit__list-item">\n <a href="https://www.bbc.co.uk/news/10628994" class="blue-tit__list-item-link mobile">On your mobile</a>\n </li>\n <li class="blue-tit__list-item">\n <a href="https://www.bbc.co.uk/news/help-17655000" class="blue-tit__list-item-link connected-tv">On your connected tv</a>\n </li>\n <li class="blue-tit__list-item">\n <a href="https://www.bbc.co.uk/news/10628323" class="blue-tit__list-item-link newsletter">Get news alerts</a>\n </li>\n <li class="blue-tit__list-item">\n <a href="https://www.bbc.co.uk/news/20039682" class="blue-tit__list-item-link contact-us">Contact BBC News</a>\n </li>\n </ul>\n </div>\n</div>\n \n </div>\n </div><!-- closes #site-container --> </div>\n<div id="orb-footer" class="orb-footer" dir="ltr"><div id="navp-orb-footer-promo"></div><aside role="complementary"><div id="orb-aside" class="orb-nav-sec b-r b-g-p"><div class="orb-footer-inner" role="navigation" aria-label="BBC"><h2 class="orb-footer-lead">Explore the BBC</h2><div class="orb-footer-primary-links"><ul><li class="orb-nav-home"><a href="https://www.bbc.co.uk">Home</a></li><li class="orb-nav-news"><a href="https://www.bbc.co.uk/news">News</a></li><li class="orb-nav-sport"><a href="https://www.bbc.co.uk/sport">Sport</a></li><li class="orb-nav-weather"><a href="https://www.bbc.co.uk/weather">Weather</a></li><li class="orb-nav-iplayer"><a href="https://www.bbc.co.uk/iplayer">iPlayer</a></li><li class="orb-nav-sounds"><a href="https://www.bbc.co.uk/sounds">Sounds</a></li><li class="orb-nav-cbbc"><a href="https://www.bbc.co.uk/cbbc">CBBC</a></li><li class="orb-nav-cbeebies"><a href="https://www.bbc.co.uk/cbeebies">CBeebies</a></li><li class="orb-nav-food"><a href="https://www.bbc.co.uk/food">Food</a></li><li class="orb-nav-bitesize"><a href="https://www.bbc.co.uk/bitesize">Bitesize</a></li><li class="orb-nav-arts"><a href="https://www.bbc.co.uk/arts">Arts</a></li><li class="orb-nav-taster"><a href="https://www.bbc.co.uk/taster">Taster</a></li><li class="orb-nav-local"><a href="https://www.bbc.co.uk/news/localnews">Local</a></li><li class="orb-nav-tv"><a href="https://www.bbc.co.uk/tv">TV</a></li><li class="orb-nav-radio"><a href="https://www.bbc.co.uk/radio">Radio</a></li><li class="orb-nav-three"><a href="https://www.bbc.co.uk/bbcthree">Three</a></li></ul></div></div></div></aside><footer role="contentinfo"><div id="orb-contentinfo" class="orb-nav-sec b-r b-g-p"><script>window.orb.worldwideFooterlinks = \'<li class="orb-footer-ads"><a href="https://advertising.bbcworldwide.com/">Advertise with us<\'+\'/a><\'+\'/li><li class="orb-footer-adchoices"><a href="https://www.bbc.com/usingthebbc/cookies/how-does-the-bbc-use-cookies-for-advertising/">Ad choices<\'+\'/a><\'+\'/li>\';</script><div class="orb-footer-inner"> <ul><li class="orb-footer-terms"><a href="https://www.bbc.co.uk/usingthebbc/terms/">Terms of Use</a></li><li class="orb-footer-about"><a href="https://www.bbc.co.uk/aboutthebbc">About the BBC</a></li><li class="orb-footer-privacy"><a href="https://www.bbc.co.uk/usingthebbc/privacy/">Privacy Policy</a></li><li class="orb-footer-cookies"><a href="https://www.bbc.co.uk/usingthebbc/cookies/">Cookies</a></li><li class="orb-footer-accessibility"><a href="https://www.bbc.co.uk/accessibility/">Accessibility Help</a></li><li class="orb-footer-parental"><a href="https://www.bbc.co.uk/guidance">Parental Guidance</a></li><li class="orb-footer-contact"><a href="https://www.bbc.co.uk/contact">Contact the BBC</a></li><li class="orb-footer-newsletter"><a href="https://www.bbc.co.uk/bbcnewsletter">Get Personalised Newsletters</a></li></ul><small><em class="orb-hilight">Copyright &copy; 2019 BBC.</em> The BBC is not responsible for the content of external sites. <span class="orb-footer-links"><a href="https://www.bbc.co.uk/help/web/links/" class="orb-hilight">Read about our approach to external linking.</a></span></small></div></div></div></footer></div><script id="orb-js-script" data-assetpath="https://nav.files.bbci.co.uk/orbit/a07e26191aed6a8725358c88df999791/" src="https://nav.files.bbci.co.uk/orbit/a07e26191aed6a8725358c88df999791/js/orb.min.js"></script> <script type="text/javascript">require([\'orb/lib/_$\'] function($) {\n $.ready(function() {\n initialiseFooter();\n });\n var scrollCheckTimer;\n var didScroll;\n var previousPosition = 0;\n var delta = 5;\n var PROMO_SHOW_BREAKPOINT = 1500;\n var pageLength = 0;\n function initialiseFooter() {\n // Suppress this feature on browsers we no longer test\n var myNav = navigator.userAgent.toLowerCase();\n var oldIE = (myNav.indexOf(\'msie\') !== -1) && parseInt(myNav.split(\'msie\')[1] 10) <= 10;\n if (!oldIE) {\n require([\'orb/cookies\'] function (bbccookies) {\n var disabledByCookie = (parseInt(bbccookies.get(\'ckns_nav_promofail\')) || 0) >= 3;\n if (!disabledByCookie) {\n require([\'orb/fig\'] function (orbFig) {\n orbFig.load(function (fig) {\n if (fig.geo.isUK()) {\n setUpLazyLoading();\n }\n });\n });\n }\n });\n }\n }\n function setUpLazyLoading() {\n // offsetHeight is expensive to calculate only do it once.\n pageLength = Math.abs(document.body.offsetHeight);\n if (pageLength < getViewportHeight() + 300 || pageLength - getCurrentPosition() < PROMO_SHOW_BREAKPOINT) {\n loadPromo();\n } else {\n window.onscroll = function () {\n didScroll = true;\n };\n scrollCheckTimer = setInterval(function () {\n if (didScroll) {\n hasScrolled();\n didScroll = false;\n }\n } 250);\n }\n }\n function loadPromo() {\n clearInterval(scrollCheckTimer);\n require([\'orb/async/_footerpromo\'] function(promo) {\n promo.init(\'https://navpromo.api.bbci.co.uk\' \'\');\n });\n }\n function getViewportHeight() {\n return window.innerHeight;\n }\n function getCurrentPosition() {\n return Math.abs(window.scrollY || document.body.scrollTop || document.documentElement.scrollTop);\n }\n function hasScrolled() {\n var currentPosition = getCurrentPosition();\n if (Math.abs(previousPosition - currentPosition) <= delta) {\n return;\n }\n if (currentPosition > previousPosition) {\n if ((pageLength - currentPosition) <= PROMO_SHOW_BREAKPOINT) {\n loadPromo();\n }\n }\n previousPosition = currentPosition;\n }\n })</script><script type="text/javascript">/*<![CDATA[*/\n require([\'orb/nav\'] function(nav) {\n window.bbcuser.isUKCombined().then(function(isUK) {\n if (isUK) {\n nav.loadJs(\'https://nav.files.bbci.co.uk/orbit/a07e26191aed6a8725358c88df999791/js/edr.min.js\');\n }\n });\n });\n /*]]>*/</script><script type="text/javascript">require.config({\n paths: {\n "mybbc/templates": \'//mybbc.files.bbci.co.uk/notification-ui/3.9.10/templates\' \n "mybbc/notifications": \'//mybbc.files.bbci.co.uk/notification-ui/3.9.10/js\'\n }\n });\n require([\'mybbc/notifications/NotificationsMain\' \'idcta/idcta-1\'] function (NotificationsMain idcta) {\n var loadNotifications = function (isUK) {\n if (isUK) {\n window.bbcpage.loadCSS(\'//mybbc.files.bbci.co.uk/notification-ui/3.9.10/css/main.min.css\').then(function() {\n NotificationsMain.run(idcta \'//mybbc.files.bbci.co.uk/notification-ui/3.9.10/\');\n });\n }\n };\n \n if (window.bbcuser && window.bbcuser.isUKCombined && typeof(window.bbcuser.isUKCombined) === \'function\') {\n // Use new API from Orbit if available\n window.bbcuser.isUKCombined().then(function(isUK) {\n loadNotifications(isUK); \n });\n } else {\n // Fallback to fig (ORB support)\n var orbFig = window.orb.fig;\n loadNotifications(orbFig.geo.isUK());\n }\n });</script><!-- BBCDOTCOM bodyLast --><div class="bbccom_display_none"><script type="text/javascript">/*<![CDATA[*/ if (window.bbcdotcom && window.bbcdotcom.analytics && bbcdotcom.config && !bbcdotcom.config.isSportApp() && !bbcdotcom.config.isReel()) { bbcdotcom.analytics.page(); } /*]]>*/</script><noscript><img src="//ssc.api.bbc.com/?c1=2&c2=19293874&ns_site=bbc&name=" height="1" width="1" alt=""></noscript><script type="text/javascript">/*<![CDATA[*/ if (window.bbcdotcom && bbcdotcom.currencyProviders) { bbcdotcom.currencyProviders.write(); } /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ if (window.bbcdotcom && bbcdotcom.currencyProviders) { bbcdotcom.currencyProviders.postWrite(); } /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ if (window.bbcdotcom && bbcdotcom.data && bbcdotcom.data.stats && bbcdotcom.data.stats === 1 && bbcdotcom.utils && window.location.pathname === \'/\') { var wwhpEdition = bbcdotcom.utils.getMetaPropertyContent(\'wwhp-edition\'); var _sf_async_config={}; /** CONFIGURATION START **/ _sf_async_config.uid = 50924; _sf_async_config.domain = "bbc.co.uk"; _sf_async_config.title = "Homepage"+(wwhpEdition !== \'\' ? \' - \'+wwhpEdition : \'\'); _sf_async_config.sections = "Homepage"+(wwhpEdition !== \'\' ? \' Homepage - \'+wwhpEdition : \'\'); _sf_async_config.region = wwhpEdition; _sf_async_config.path = "/"+(wwhpEdition !== \'\' ? \'?\'+wwhpEdition : \'\'); /** CONFIGURATION END **/ (function(){ function loadChartbeat() { window._sf_endpt=(new Date()).getTime(); var e = document.createElement("script"); e.setAttribute("language" "javascript"); e.setAttribute("type" "text/javascript"); e.setAttribute(\'src\' \'//static.chartbeat.com/js/chartbeat.js\'); document.body.appendChild(e); } var oldonload = window.onload; window.onload = (typeof window.onload != "function") ? loadChartbeat : function() { oldonload(); loadChartbeat(); }; })(); } /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ (function() { window.bbcdotcom.bodyLast = true; }()); /*]]>*/</script></div><!-- BBCDOTCOM all code in page --><script type="text/javascript">if (window.SEARCHBOX.suppress === false && window.SEARCHBOX.locale && /^en-?.*?/.test(window.SEARCHBOX.locale)) {\n require.config({\n paths: {\n "search/searchbox": window.SEARCHBOX.searchboxAppStaticPrefix \n }\n });\n if (bbcuser && bbcuser.isUKCombined) {\n bbcuser.isUKCombined().then(function (isUK) {\n if (isUK) {\n require([\'search/searchbox/searchboxDrawer\'] function (SearchboxDrawer) {\n SearchboxDrawer.run(window.SEARCHBOX);\n });\n }\n });\n }\n }</script> <script type="text/javascript">window.COOKIES_STATIC_HOST = \'https://nav.files.bbci.co.uk/orbit-webmodules/0.0.2-398.6553dba/cookie-banner/cookie-prompt/\';</script><script src="https://nav.files.bbci.co.uk/orbit-webmodules/0.0.2-398.6553dba/cookie-banner/cookie-banners.bundle.js" async=""></script><script type="text/javascript">require(["istats-1" "orb/cookies"] function(o t){if(t.isAllowed("s1"))try{if(!require.s.contexts._.config.paths.idcta)return void i();require(["idcta/idcta-1"] function(t){t&&"function"==typeof t.getIStatsLabels&&o.addLabels(t.getIStatsLabels()) i()} function(t){throw t})}catch(t){console&&"function"==typeof console.log&&console.log("an exception occurred while adding idcta labels to istats invoking istats without them" t) i()}function i(){o.invoke()}});</script><script type="text/javascript">"use strict";window.__reverb.__reverbLoadedPromise.then(function(e){return e.initialise().then(function(){return e.viewEvent()})} function(){console.log("Failed to load reverb. No event sent")});</script><script src="https://nav.files.bbci.co.uk/orbit-webmodules/0.0.2-398.6553dba/detectview/detectview.bundle.js" async=""></script> </div><!-- closes .direction --> <script> window.old_onload = window.onload; window.onload = function() { if(window.old_onload) { window.old_onload(); } window.loaded = true; }; </script> <!-- Chartbeat Web Analytics code - start -->\n<script type="text/javascript">\n /** CONFIGURATION START **/\n var _sf_async_config = {};\n _sf_async_config.uid = "50924";\n _sf_async_config.domain = "www.bbc.co.uk";\n _sf_async_config.sections = "News News - technology News - STY News - technology - STY News - unknown";\n <!-- if page is an index add the edition to the path -->\n _sf_async_config.path = "bbc.co.uk/news/technology-26415021";\n (function() {\n var cookiePrefix = \'ckns_sylphid\';\n _sf_async_config.idSync = _sf_async_config.idSync || {};\n if (document.cookie.indexOf(cookiePrefix) !== -1) {\n var cookieSplit = document.cookie.split(\';\');\n var cookieLength = cookieSplit.length;\n while (cookieLength--) {\n var cookie = cookieSplit[cookieLength].replace(/^\\s+|\\s+$/g \'\');\n var cookieName = cookie.split(\'=\')[0];\n if (cookieName.indexOf(cookiePrefix) === 0) {\n _sf_async_config.idSync.bbc_hid = cookieSplit[cookieLength].split(\'=\')[1];\n break;\n }\n }\n }\n }());\n /** CONFIGURATION END **/\n (function(){\n function loadChartbeat() {\n window._sf_endpt=(new Date()).getTime();\n var e = document.createElement("script");\n e.setAttribute("language" "javascript");\n e.setAttribute("type" "text/javascript");\n e.setAttribute(\'src\' \'//static.chartbeat.com/js/chartbeat.js\');\n document.body.appendChild(e);\n }\n var oldonload = window.onload;\n window.onload = (typeof window.onload != "function") ?\n loadChartbeat : function() { oldonload(); loadChartbeat(); };\n }());\n</script>\n<!-- Chartbeat Web Analytics code - end -->\n <!-- mpulse start -->\n<script>\n(function(){\n window.bbcnewsperformance = {};\n var perf = window.performance;\n function firstScrollTimer() {\n document.removeEventListener(\'scroll\' firstScrollTimer);\n perf.mark(\'firstScroll\');\n perf.measure(\'scrolltime\' \'firstScroll\');\n var timing = perf.getEntriesByName(\'scrolltime\');\n bbcnewsperformance.firstScrollTime = timing[0].startTime;\n }\n if (perf && perf.mark && perf.measure) {\n document.addEventListener(\'scroll\' firstScrollTimer);\n }\n var random = Math.random();\n var rate = 0.25;\n var throttle = 0.02;\n var forceMpulse = window.location.href.match(/force_mpulse/);\n if (rate && throttle && (random < (rate * throttle)) || forceMpulse) {\n if(window.BOOMR && window.BOOMR.version){return;}\n var dom doc where iframe = document.createElement(\'iframe\') win = window;\n function boomerangSaveLoadTime(e) {\n win.BOOMR_onload=(e && e.timeStamp) || new Date().getTime();\n }\n if (win.addEventListener) {\n win.addEventListener("load" boomerangSaveLoadTime false);\n } else if (win.attachEvent) {\n win.attachEvent("onload" boomerangSaveLoadTime);\n }\n iframe.src = "javascript:false";\n iframe.title = ""; iframe.role="presentation";\n (iframe.frameElement || iframe).style.cssText = "width:0;height:0;border:0;display:none;";\n where = document.getElementsByTagName(\'script\')[0];\n where.parentNode.insertBefore(iframe where);\n try {\n doc = iframe.contentWindow.document;\n } catch(e) {\n dom = document.domain;\n iframe.src="javascript:var d=document.open();d.domain=\'"+dom+"\';void(0);";\n doc = iframe.contentWindow.document;\n }\n doc.open()._l = function() {\n var js = this.createElement("script");\n if(dom) this.domain = dom;\n js.id = "boomr-if-as";\n js.src = \'//c.go-mpulse.net/boomerang/\' +\n \'86ZLR-T78UG-6FNFN-UVDPZ-VZFWR\';\n BOOMR_lstart=new Date().getTime();\n this.body.appendChild(js);\n };\n doc.write(\'<body onload="document._l();">\');\n doc.close();\n }\n})();\n</script>\n<!-- mpulse end -->\n </body> </html> \n'

This is becoming a mess, let us get line breaks back:

In [5]:
html = html.split("\n") # html is now a list of lines
html = "\n".join(html)    # we turn it back into a single string
print(html)
<!DOCTYPE html>
<html lang="en" id="responsive-news">
<head prefix="og: http://ogp.me/ns#">
 <meta name="viewport" content="width=device-width initial-scale=1 user-scalable=1">
 <meta charset="utf-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge chrome=1">
 <title>An hour to catch the coding bug - BBC News</title>
 <meta name="description" content="Is it possible to get children interested in computer programming in just 60 minutes? The Hour of Code has been designed to do just that.">
 <link rel="preload" as="style" href="https://static.bbc.co.uk/news/1.303.03507/stylesheets/services/news/compact.css" media="(max-width: 599px)">
 <link rel="preload" as="style" href="https://static.bbc.co.uk/news/1.303.03507/stylesheets/services/news/tablet.css" media="(min-width: 600px) and (max-width: 1007px)">
 <link rel="preload" as="style" href="https://static.bbc.co.uk/news/1.303.03507/stylesheets/services/news/wide.css" media="(min-width: 1008px)">
 <script> window.orb_fig_blocking = true; </script>
 
 <link rel="preload" as="script" href="//fig.bbc.co.uk/frameworks/fig/2/fig.js?callback=orb.orb_fig">
 
 <link href="//static.bbci.co.uk" rel="preconnect" crossorigin>
 <link href="//static.bbc.co.uk" rel="preconnect" crossorigin>
 <link href="//nav.files.bbci.co.uk" rel="preconnect" crossorigin>
 <link href="//ichef.bbci.co.uk" rel="preconnect" crossorigin>
 <link rel="dns-prefetch" href="//ssl.bbc.co.uk/">
 <link rel="dns-prefetch" href="//sa.bbc.co.uk/">
 <link rel="dns-prefetch" href="//ichef.bbci.co.uk/">
 <link rel="dns-prefetch" href="//c.go-mpulse.net/">
 <link rel="dns-prefetch" href="//edigitalsurvey.com">
 <meta name="x-country" content="il">
 <meta name="x-audience" content="International">
 <meta name="CPS_AUDIENCE" content="International">
 <meta name="CPS_CHANGEQUEUEID" content="">
 <link rel="canonical" href="https://www.bbc.com/news/technology-26415021">
 <link rel="alternate" hreflang="en-gb" href="https://www.bbc.co.uk/news/technology-26415021">
 <link rel="alternate" hreflang="en" href="https://www.bbc.com/news/technology-26415021">
 <meta property="og:title" content="How to get your children coding" />
 <meta property="og:type" content="article" />
 <meta property="og:description" content="Is it possible to get children interested in computer programming in just 60 minutes? The Hour of Code has been designed to do just that." />
 <meta property="og:site_name" content="BBC News" />
 <meta property="og:locale" content="en_GB" />
 <meta property="article:author" content="https://www.facebook.com/bbcnews" />
 <meta property="article:section" content="Technology" />
 <meta property="og:url" content="https://www.bbc.com/news/technology-26415021" />
 <meta property="og:image" content="https://ichef.bbci.co.uk/news/1024/media/images/73325000/jpg/_73325163_olly009.jpg" />
 <meta property="og:image:alt" content="BBC News. Screenshot from the hour of code" />
 <meta property="fb:pages" content="1143803202301544 317278538359186 1392506827668140 742734325867560 185246968166196 156060587793370 137920769558355 193435954068976 21263239760 156400551056385 929399697073756 154344434967 228735667216 80758950658 260212261199 294662213128 1086451581439054 283348121682053 295830058648 239931389545417 304314573046 310719525611571 647687225371774 1159932557403143 286567251709437 1731770190373618 125309456546 163571453661989 285361880228 512423982152360 238003846549831 176663550714 260967092113 118450564909230 100978706649892 15286229625 122103087870579 120655094632228 102814153147070 124715648647 153132638110668 150467675018739" />
 <meta name="twitter:card" content="summary_large_image">
 <meta name="twitter:site" content="@BBCWorld">
 <meta name="twitter:title" content="How to get your children coding">
 <meta name="twitter:description" content="Is it possible to get children interested in computer programming in just 60 minutes? The Hour of Code has been designed to do just that.">
 <meta name="twitter:creator" content="@BBCWorld">
 <meta name="twitter:image:src" content="https://ichef.bbci.co.uk/news/1024/media/images/73325000/jpg/_73325163_olly009.jpg">
 <meta name="twitter:image:alt" content="Screenshot from the hour of code" />
 <meta name="twitter:domain" content="www.bbc.com">
 <script type="application/ld+json">
 {"@context":"http:\/\/schema.org" "@type":"ReportageNewsArticle" "url":"https:\/\/www.bbc.com\/news\/technology-26415021" "publisher":{"@type":"NewsMediaOrganization" "name":"BBC News" "publishingPrinciples":"http:\/\/www.bbc.co.uk\/news\/help-41670342" "logo":{"@type":"ImageObject" "url":"https:\/\/www.bbc.co.uk\/news\/special\/2015\/newsspec_10857\/bbc_news_logo.png?cb=1"}} "datePublished":"2014-03-03T10:22:55+00:00" "dateModified":"2014-03-03T10:22:55+00:00" "headline":"How to get your children coding" "image":{"@type":"ImageObject" "width":720 "height":450 "url":"https:\/\/ichef.bbci.co.uk\/news\/720\/media\/images\/73325000\/jpg\/_73325163_olly009.jpg"} "thumbnailUrl":"https:\/\/ichef.bbci.co.uk\/news\/208\/media\/images\/73325000\/jpg\/_73325163_olly009.jpg" "author":{"@type":"Person" "name":"Mark Ward"} "mainEntityOfPage":"https:\/\/www.bbc.com\/news\/technology-26415021"}
 </script>
 <meta name="apple-itunes-app" content="app-id=364147881 app-argument=https://www.bbc.com/news/technology-26415021?utm_medium=banner&utm_content=apple-itunes-app">
 
 <meta name="apple-mobile-web-app-title" content="BBC News">
<link rel="apple-touch-icon-precomposed" sizes="57x57" href="https://static.bbc.co.uk/news/1.303.03507/apple-touch-icon-57x57-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="https://static.bbc.co.uk/news/1.303.03507/apple-touch-icon-72x72-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="https://static.bbc.co.uk/news/1.303.03507/apple-touch-icon-114x114-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="https://static.bbc.co.uk/news/1.303.03507/apple-touch-icon.png">
<link rel="apple-touch-icon" href="https://static.bbc.co.uk/news/1.303.03507/apple-touch-icon.png">
<link rel="apple-touch-startup-image" href="https://static.bbc.co.uk/news/1.303.03507/web-app-launch-icon.png">
<meta name="application-name" content="BBC News">
<meta name="msapplication-TileImage" content="BBC News">
<meta name="msapplication-TileColor" content="#bb1919">
<meta name="mobile-web-app-capable" content="yes">
 <meta http-equiv="cleartype" content="on">
 <meta name="robots" content="NOODP NOYDIR" />
 <meta name="theme-color" content="#bb1919">
 <script type="text/javascript">var _sf_startpt=(new Date()).getTime()</script>
 <script>
 (function() {
 if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
 var msViewportStyle = document.createElement("style");
 msViewportStyle.appendChild(
 document.createTextNode("@-ms-viewport{width:auto!important}")
 );
 document.getElementsByTagName("head")[0].appendChild(msViewportStyle);
 }
 })();
 </script>
 
 <script>window.fig = window.fig || {}; window.fig.async = true;</script>
 <meta property="fb:app_id" content="1609039196070050" />
 <script type="text/javascript">window.bbcredirection={geo:true}</script>
<!-- Environment: live -->
<!-- Orbit: 3.0.0-780.5d50e4a1 -->
<!-- Analytics Web Module: 0.0.2-398.6553dba -->
<!-- NavID Web Module: 0.2.0-92.e536e2f -->
<!-- Detectview Web Module: 0.0.2-398.6553dba -->
<!-- Searchbox Web Module: 3.0.0-49.3719992 -->
<!-- Promo Web Module: 3.0.0-70.cc3da46 -->
<meta name="viewport" content="width=device-width initial-scale=1.0"><meta property="fb:admins" content="100004154058350"><link rel="stylesheet" href="https://nav.files.bbci.co.uk/orbit/a07e26191aed6a8725358c88df999791/css/orb-ltr.min.css"><!--[if (lt IE 9) & (!IEMobile)]>
 <link rel="stylesheet" href="https://nav.files.bbci.co.uk/orbit/a07e26191aed6a8725358c88df999791/css/orb-ie-ltr.min.css">
 <![endif]--><script type="text/javascript">/*<![CDATA[*/
 window.orb = {
 lang: 'en' 
 bbcBaseUrl: 'https://www.bbc.co.uk' 
 bbcUrlPrefix: 'https://www.' 
 staticHost: 'https://nav.files.bbci.co.uk/orbit/a07e26191aed6a8725358c88df999791' 
 figUrl: 'https://fig.bbc.co.uk/frameworks/fig/2/fig.js' 
 partialCookieOvenUrl: 'https://cookie-oven.api.bbc'
 };
 document.documentElement.className += (document.documentElement.className? ' ' : '') + 'orb-js';
 window.orb.worldwideNavlinks = '<li class="orb-nav-homedotcom"><a href="https://www.bbc.com/">Home</a></li><li class="orb-nav-newsdotcom"><a href="https://www.bbc.com/news">News</a></li><li class="orb-nav-sport"><a href="https://www.bbc.com/sport">Sport</a></li><li class="orb-nav-reeldotcom"><a href="https://www.bbc.com/reel">Reel</a></li><li class="orb-nav-worklife"><a href="https://www.bbc.com/worklife">Worklife</a></li><li class="orb-nav-traveldotcom"><a href="https://www.bbc.com/travel">Travel</a></li><li class="orb-nav-future"><a href="https://www.bbc.com/future">Future</a></li><li class="orb-nav-culture"><a href="https://www.bbc.com/culture">Culture</a></li><li class="orb-nav-music"><a href="https://www.bbc.com/culture/music">Music</a></li><li class="orb-nav-tv"><a href="https://www.bbc.co.uk/schedules/p00fzl9m">TV</a></li><li class="orb-nav-weather"><a href="https://www.bbc.com/weather">Weather</a></li><li class="orb-nav-sounds"><a href="https://www.bbc.co.uk/sounds">Sounds</a></li>';
 /*]]>*/</script><script>// Promise polyfill from https://github.com/bramstein/promis
 (function(){'use strict';var f g=[];function l(a){g.push(a);1==g.length&&f()}function m(){for(;g.length;)g[0]() g.shift()}f=function(){setTimeout(m)};function n(a){this.a=p;this.b=void 0;this.f=[];var b=this;try{a(function(a){q(b a)} function(a){r(b a)})}catch(c){r(b c)}}var p=2;function t(a){return new n(function(b c){c(a)})}function u(a){return new n(function(b){b(a)})}function q(a b){if(a.a==p){if(b==a)throw new TypeError;var c=!1;try{var d=b&&b.then;if(null!=b&&"object"==typeof b&&"function"==typeof d){d.call(b function(b){c||q(a b);c=!0} function(b){c||r(a b);c=!0});return}}catch(e){c||r(a e);return}a.a=0;a.b=b;v(a)}} function r(a b){if(a.a==p){if(b==a)throw new TypeError;a.a=1;a.b=b;v(a)}}function v(a){l(function(){if(a.a!=p)for(;a.f.length;){var b=a.f.shift() c=b[0] d=b[1] e=b[2] b=b[3];try{0==a.a?"function"==typeof c?e(c.call(void 0 a.b)):e(a.b):1==a.a&&("function"==typeof d?e(d.call(void 0 a.b)):b(a.b))}catch(h){b(h)}}})}n.prototype.g=function(a){return this.c(void 0 a)};n.prototype.c=function(a b){var c=this;return new n(function(d e){c.f.push([a b d e]);v(c)})}; function w(a){return new n(function(b c){function d(c){return function(d){h[c]=d;e+=1;e==a.length&&b(h)}}var e=0 h=[];0==a.length&&b(h);for(var k=0;k<a.length;k+=1)u(a[k]).c(d(k) c)})}function x(a){return new n(function(b c){for(var d=0;d<a.length;d+=1)u(a[d]).c(b c)})};window.Promise||(window.Promise=n window.Promise.resolve=u window.Promise.reject=t window.Promise.race=x window.Promise.all=w window.Promise.prototype.then=n.prototype.c window.Promise.prototype["catch"]=n.prototype.g);}());
 
 
 // Polyfill Event constructor for IE ref: https://jira.dev.bbc.co.uk/browse/ORBITEN-919
 // see: https://stackoverflow.com/questions/26596123
 (function () {
 if (typeof window.CustomEvent === "function") {
 return false;
 }
 function CustomEvent(event params) {
 params = params || { bubbles: false cancelable: false detail: undefined };
 var evt = document.createEvent('CustomEvent');
 evt.initCustomEvent(event params.bubbles params.cancelable params.detail);
 return evt;
 }
 CustomEvent.prototype = window.Event.prototype;
 window.Event = CustomEvent;
 })();
 
 
 //Element.prototype.matches polyfill
 //from https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill
 if (!Element.prototype.matches) {
 Element.prototype.matches = Element.prototype.msMatchesSelector ||
 Element.prototype.webkitMatchesSelector;
 }
 //NodeList.forEach Polyfill
 //from https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach#Polyfill
 if (window.NodeList && !NodeList.prototype.forEach) {
 NodeList.prototype.forEach = Array.prototype.forEach;
 }
 
 // Object.assign polyfill from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill
 if (typeof Object.assign != 'function') {
 // Must be writable: true enumerable: false configurable: true
 Object.defineProperty(Object "assign" {
 value: function assign(target varArgs) { // .length of function is 2
 'use strict';
 if (target == null) { // TypeError if undefined or null
 throw new TypeError('Cannot convert undefined or null to object');
 }
 
 var to = Object(target);
 
 for (var index = 1; index < arguments.length; index++) {
 var nextSource = arguments[index];
 
 if (nextSource != null) { // Skip over if undefined or null
 for (var nextKey in nextSource) {
 // Avoid bugs when hasOwnProperty is shadowed
 if (Object.prototype.hasOwnProperty.call(nextSource nextKey)) {
 to[nextKey] = nextSource[nextKey];
 }
 }
 }
 }
 return to;
 } 
 writable: true 
 configurable: true
 });
 }
 
 // window.fetch polyfill https://github.com/github/fetch/blob/v0.11.0/fetch.js - chosen for IE9 compatibility
 if(typeof window.fetch !== 'function') {
 (function(self){"use strict";if(self.fetch){return}function normalizeName(name){if(typeof name!=="string"){name=String(name)}if(/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(name)){throw new TypeError("Invalid character in header field name")}return name.toLowerCase()}function normalizeValue(value){if(typeof value!=="string"){value=String(value)}return value}function Headers(headers){this.map={};if(headers instanceof Headers){headers.forEach(function(value name){this.append(name value)} this)}else if(headers){Object.getOwnPropertyNames(headers).forEach(function(name){this.append(name headers[name])} this)}}Headers.prototype.append=function(name value){name=normalizeName(name);value=normalizeValue(value);var list=this.map[name];if(!list){list=[];this.map[name]=list}list.push(value)};Headers.prototype["delete"]=function(name){delete this.map[normalizeName(name)]};Headers.prototype.get=function(name){var values=this.map[normalizeName(name)];return values?values[0]:null};Headers.prototype.getAll=function(name){return this.map[normalizeName(name)]||[]};Headers.prototype.has=function(name){return this.map.hasOwnProperty(normalizeName(name))};Headers.prototype.set=function(name value){this.map[normalizeName(name)]=[normalizeValue(value)]};Headers.prototype.forEach=function(callback thisArg){Object.getOwnPropertyNames(this.map).forEach(function(name){this.map[name].forEach(function(value){callback.call(thisArg value name this)} this)} this)};function consumed(body){if(body.bodyUsed){return Promise.reject(new TypeError("Already read"))}body.bodyUsed=true}function fileReaderReady(reader){return new Promise(function(resolve reject){reader.onload=function(){resolve(reader.result)};reader.onerror=function(){reject(reader.error)}})}function readBlobAsArrayBuffer(blob){var reader=new FileReader;reader.readAsArrayBuffer(blob);return fileReaderReady(reader)}function readBlobAsText(blob){var reader=new FileReader;reader.readAsText(blob);return fileReaderReady(reader)}var support={blob:"FileReader"in self&&"Blob"in self&&function(){try{new Blob;return true}catch(e){return false}}() formData:"FormData"in self arrayBuffer:"ArrayBuffer"in self};function Body(){this.bodyUsed=false;this._initBody=function(body){this._bodyInit=body;if(typeof body==="string"){this._bodyText=body}else if(support.blob&&Blob.prototype.isPrototypeOf(body)){this._bodyBlob=body}else if(support.formData&&FormData.prototype.isPrototypeOf(body)){this._bodyFormData=body}else if(!body){this._bodyText=""}else if(support.arrayBuffer&&ArrayBuffer.prototype.isPrototypeOf(body)){}else{throw new Error("unsupported BodyInit type")}if(!this.headers.get("content-type")){if(typeof body==="string"){this.headers.set("content-type" "text/plain;charset=UTF-8")}else if(this._bodyBlob&&this._bodyBlob.type){this.headers.set("content-type" this._bodyBlob.type)}}};if(support.blob){this.blob=function(){var rejected=consumed(this);if(rejected){return rejected}if(this._bodyBlob){return Promise.resolve(this._bodyBlob)}else if(this._bodyFormData){throw new Error("could not read FormData body as blob")}else{return Promise.resolve(new Blob([this._bodyText]))}};this.arrayBuffer=function(){return this.blob().then(readBlobAsArrayBuffer)};this.text=function(){var rejected=consumed(this);if(rejected){return rejected}if(this._bodyBlob){return readBlobAsText(this._bodyBlob)}else if(this._bodyFormData){throw new Error("could not read FormData body as text")}else{return Promise.resolve(this._bodyText)}}}else{this.text=function(){var rejected=consumed(this);return rejected?rejected:Promise.resolve(this._bodyText)}}if(support.formData){this.formData=function(){return this.text().then(decode)}}this.json=function(){return this.text().then(JSON.parse)};return this}var methods=["DELETE" "GET" "HEAD" "OPTIONS" "POST" "PUT"];function normalizeMethod(method){var upcased=method.toUpperCase();return methods.indexOf(upcased)>-1?upcased:method}function Request(input options){options=options||{};var body=options.body;if(Request.prototype.isPrototypeOf(input)){if(input.bodyUsed){throw new TypeError("Already read")}this.url=input.url;this.credentials=input.credentials;if(!options.headers){this.headers=new Headers(input.headers)}this.method=input.method;this.mode=input.mode;if(!body){body=input._bodyInit;input.bodyUsed=true}}else{this.url=input}this.credentials=options.credentials||this.credentials||"omit";if(options.headers||!this.headers){this.headers=new Headers(options.headers)}this.method=normalizeMethod(options.method||this.method||"GET");this.mode=options.mode||this.mode||null;this.referrer=null;if((this.method==="GET"||this.method==="HEAD")&&body){throw new TypeError("Body not allowed for GET or HEAD requests")}this._initBody(body)}Request.prototype.clone=function(){return new Request(this)};function decode(body){var form=new FormData;body.trim().split("&").forEach(function(bytes){if(bytes){var split=bytes.split("=");var name=split.shift().replace(/\+/g " ");var value=split.join("=").replace(/\+/g " ");form.append(decodeURIComponent(name) decodeURIComponent(value))}});return form}function headers(xhr){var head=new Headers;var pairs=xhr.getAllResponseHeaders().trim().split("\n");pairs.forEach(function(header){var split=header.trim().split(":");var key=split.shift().trim();var value=split.join(":").trim();head.append(key value)});return head}Body.call(Request.prototype);function Response(bodyInit options){if(!options){options={}}this.type="default";this.status=options.status;this.ok=this.status>=200&&this.status<300;this.statusText=options.statusText;this.headers=options.headers instanceof Headers?options.headers:new Headers(options.headers);this.url=options.url||"";this._initBody(bodyInit)}Body.call(Response.prototype);Response.prototype.clone=function(){return new Response(this._bodyInit {status:this.status statusText:this.statusText headers:new Headers(this.headers) url:this.url})};Response.error=function(){var response=new Response(null {status:0 statusText:""});response.type="error";return response};var redirectStatuses=[301 302 303 307 308];Response.redirect=function(url status){if(redirectStatuses.indexOf(status)===-1){throw new RangeError("Invalid status code")}return new Response(null {status:status headers:{location:url}})};self.Headers=Headers;self.Request=Request;self.Response=Response;self.fetch=function(input init){return new Promise(function(resolve reject){var request;if(Request.prototype.isPrototypeOf(input)&&!init){request=input}else{request=new Request(input init)}var xhr=new XMLHttpRequest;function responseURL(){if("responseURL"in xhr){return xhr.responseURL}if(/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())){return xhr.getResponseHeader("X-Request-URL")}return}xhr.onload=function(){var status=xhr.status===1223?204:xhr.status;if(status<100||status>599){reject(new TypeError("Network request failed"));return}var options={status:status statusText:xhr.statusText headers:headers(xhr) url:responseURL()};var body="response"in xhr?xhr.response:xhr.responseText;resolve(new Response(body options))};xhr.onerror=function(){reject(new TypeError("Network request failed"))};xhr.open(request.method request.url true);if(request.credentials==="include"){xhr.withCredentials=true}if("responseType"in xhr&&support.blob){xhr.responseType="blob"}request.headers.forEach(function(value name){xhr.setRequestHeader(name value)});xhr.send(typeof request._bodyInit==="undefined"?null:request._bodyInit)})};self.fetch.polyfill=true})(typeof self!=="undefined"?self:this);
 }
 
 if (typeof window.CustomEvent !== 'function') {
 
 function CustomEvent(event params) {
 params = params || { bubbles: false cancelable: false detail: null };
 var evt = document.createEvent('CustomEvent');
 evt.initCustomEvent(event params.bubbles params.cancelable params.detail);
 return evt;
 }
 
 CustomEvent.prototype = window.Event.prototype;
 
 window.CustomEvent = CustomEvent;
 
 }
 
 (function() {
 
 var language = 'en';
 language = 'en';
 
 var modal = false;
 
 
 var istatsLabels = {name: 'news.technology.story.26415021.page' || undefined};
 istatsLabels['pal_route'] = 'asset';
 istatsLabels['language'] = 'en-GB';
 istatsLabels['pal_webapp'] = 'tabloid';
 istatsLabels['prod_name'] = 'news';
 istatsLabels['app_name'] = 'news';
 istatsLabels['cps_asset_id'] = '26415021';
 istatsLabels['page_type'] = 'Story';
 istatsLabels['section'] = '%2Fnews%2Ftechnology';
 istatsLabels['first_pub'] = '2014-03-03T07%3A36%3A59%2B00%3A00';
 istatsLabels['last_editorial_update'] = '2014-03-03T10%3A22%3A55%2B00%3A00';
 istatsLabels['curie'] = '52db3466-0acb-3a48-98c6-21a6e4f5f1cf';
 istatsLabels['title'] = 'An+hour+to+catch+the+coding+bug';
 istatsLabels['has_video'] = '';
 istatsLabels['topic_names'] = '';
 istatsLabels['topic_ids'] = '';
 istatsLabels['for_nation'] = 'il';
 istatsLabels['app_version'] = '1.303.0';
 istatsLabels['app_type'] = 'responsive';
 istatsLabels['bbc_site'] = 'news';
 
 function getMetaValue(propertyName) {
 var metaTag = document.querySelector(
 "meta[property='" + propertyName + "'] " +
 "meta[name='" + propertyName + "']");
 if (metaTag) {
 return metaTag.getAttribute("content");
 } else {
 throw new Error('No meta tag called: ' + propertyName)
 }
 }
 
 function generateCountername() {
 var pathName = window.location.pathname
 .replace(/\/$/ "")
 .replace(/^\// "")
 .replace(/\//g '.');
 return pathName + '.page';
 }
 
 var additionalPageProperties = {};
 additionalPageProperties['content_language'] = 'en-gb';
 additionalPageProperties['custom_var_1'] = '2014-03-03T10:22:55+00:00';
 additionalPageProperties['custom_var_2'] = '2014-03-03T10:22:55+00:00';
 additionalPageProperties['app_name'] = 'news';
 
 var page = {
 name: 'news.technology.story.26415021.page' || istatsLabels.name || generateCountername() 
 destination: 'NEWS_GNL' || null 
 producer: 'NEWS' || null 
 section: 'technology' || null 
 site: '' || istatsLabels.bbc_site || istatsLabels.app_name || istatsLabels.prod_name || null 
 contentId: 'urn:bbc:cps:52db3466-0acb-3a48-98c6-21a6e4f5f1cf' || null 
 contentType: 'article' || null 
 edition: '' || null 
 additionalProperties: additionalPageProperties
 };
 
 function updatePageData(newData) {
 page = Object.assign(page newData);
 }
 
 document.addEventListener('bbc-page-reset' function(event) {
 if (event.detail && event.detail.page) {
 updatePageData(event.detail.page);
 }
 document.dispatchEvent(new Event('bbc-page-updated'));
 });
 
 window.bbcpage = {
 loadModule: function(deps) {
 return new Promise(function (resolve reject) {
 window.require(deps function () {
 resolve.apply(this arguments);
 } 
 function (error) {
 reject(error);
 });
 })
 } 
 loadCSS: function (url timeout) {
 return window.bbcpage.loadModule(['orb/lib/_$'])
 .then(function($) {
 return new Promise(function(resolve reject) {
 var stylesheet = loadCSS(url);
 $.onloadCSS(stylesheet function() {
 resolve();
 });
 if (timeout) {
 setTimeout(function () { reject(); } timeout);
 }
 });
 });
 } 
 isModal: function () {
 return modal;
 } 
 getLanguage: function () {
 return new Promise(function(resolve reject) {
 resolve(language);
 });
 } 
 trackRegion: function (region labels) {
 return window.bbcpage.loadModule(['istats-1'])
 .then(function(istats) {
 
 var trackLabels = {
 region: region
 };
 
 for (var label in labels) {
 trackLabels[label] = labels[label];
 }
 
 var linkType = labels.linkType || 'internal';
 
 istats.track(linkType trackLabels);
 });
 } 
 getName: function() {
 return Promise.resolve(page.name);
 } 
 getDestination: function() {
 return Promise.resolve(page.destination);
 } 
 getProducer: function() {
 return Promise.resolve(page.producer);
 } 
 getSite: function() {
 return Promise.resolve(page.site);
 } 
 getSection: function() {
 return Promise.resolve(page.section);
 } 
 getContentType: function() {
 return Promise.resolve(page.contentType);
 } 
 getContentId: function() {
 return Promise.resolve(page.contentId);
 } 
 getEdition: function() {
 return new Promise(function (resolve reject) {
 if (page.edition) {
 resolve(page.edition);
 return;
 }
 try {
 resolve(getMetaValue('x-audience').toLowerCase());
 } catch (err){
 // This property is related to Chartbeat; see http://support.chartbeat.com/docs/
 if (window._sf_async_config) {
 resolve(window._sf_async_config.region || null);
 }
 }
 resolve(null);
 });
 } 
 getReferrer: function() {
 return Promise.resolve(window.orb && window.orb.referrer !== null && window.orb.referrer !== undefined ? window.orb.referrer : document.referrer);
 } 
 getAdditionalProperties: function() {
 return Promise.resolve(page.additionalProperties);
 }
 };
 
 var USERINFO_URL = "";
 var USERINFO_PREFIX = "www." || "www.";
 
 function initUserCache(orbitUser) {
 var availableAttr = [
 'X-Country' 
 'X-Ip_is_advertise_combined' 
 'X-Ip_is_uk_combined'
 ];
 var userCache = availableAttr.reduce(function(user curr i) {
 if (!orbitUser[curr]) {
 return user;
 }
 var res = Object.assign({} user);
 res[curr] = orbitUser[curr];
 return res;
 } {});
 if (Object.keys(userCache).length !== availableAttr.length) {
 userCache._partial = true;
 }
 return userCache;
 }
 
 var user = initUserCache({
 });
 
 function checkStatus(response) {
 if (response.status >= 200 && response.status < 300) {
 return response;
 } else {
 var error = new Error(response.statusText);
 error.response = response;
 throw error;
 }
 }
 
 function parseJSON(response) {
 return response.json();
 }
 
 var supportsCors = function() {
 return typeof XMLHttpRequest !== 'undefined' &&
 'withCredentials' in new XMLHttpRequest();
 };
 
 var getUserInfoFallback = function() {
 return window.bbcpage.loadModule(['orb/fig'])
 .then(function(orbFig) {
 return new Promise(function(resolve reject) {
 orbFig.load(function(fig) {
 var getCountryFallback = function() {
 if (fig.geo.isUK()) {
 return 'GB';
 } else if (fig.geo.isEU()) {
 return 'EU';
 }
 };
 resolve({
 'X-Country': user.country || getCountryFallback() 
 'X-Ip_is_uk_combined': fig().uk ? 'yes' : 'no' 
 'X-Ip_is_advertise_combined': fig().ad ? 'yes' : 'no'
 });
 } function () {
 reject('Error determining country. Timeout?');
 });
 });
 });
 };
 
 var _userInfoRequest;
 var getUserInfo = function() {
 
 var host = window.location.host.toString().match(/bbc\.com$/) ? 'bbc.com' : 'bbc.co.uk';
 var userInfoUrl = USERINFO_URL || window.location.protocol + "//" + USERINFO_PREFIX + host + '/userinfo';
 
 if (!user._partial) {
 return Promise.resolve(user);
 }
 
 if (!_userInfoRequest) {
 if (typeof window.fetch === 'undefined' || !supportsCors()) {
 _userInfoRequest = getUserInfoFallback();
 } else {
 _userInfoRequest = window.fetch(userInfoUrl { credentials: 'same-origin' })
 .then(checkStatus)
 .then(parseJSON)
 .then(function(userInfo) {
 user = userInfo;
 return user;
 });
 }
 }
 
 return _userInfoRequest;
 };
 
 window.bbcuser = {
 getHashedId: function() {
 return window.bbcpage.loadModule(['idcta-v2/idcta-1'])
 .then(function(idcta) {
 return idcta.getCookieInstance().getHidFromCookie();
 });
 } 
 
 getCountry: function() {
 if (user['X-Country']) {
 return Promise.resolve(user['X-Country']);
 }
 return getUserInfo().then(function(userInfo) {
 return userInfo['X-Country'] || 'GB';
 });
 } 
 
 isUKCombined: function() {
 return getUserInfo().then(function(userInfo) {
 if (!userInfo['X-Ip_is_uk_combined']) {
 throw new Error('missing isUKCombined from userinfo response');
 }
 return userInfo['X-Ip_is_uk_combined'].toLowerCase() === 'yes';
 })
 } 
 
 canSeeAdverts: function() {
 return getUserInfo().then(function(userInfo) {
 if (!userInfo['X-Ip_is_advertise_combined']) {
 throw new Error('missing canSeeAdverts from userinfo response');
 }
 return userInfo['X-Ip_is_advertise_combined'].toLowerCase() === "yes";
 });
 } 
 
 isSignedIn: function() {
 return window.bbcpage.loadModule(['idcta-v2/idcta-1'])
 .then(function(idcta) {
 return (idcta && idcta.getCookieInstance().hasCookie());
 });
 } 
 allowsPerformanceCookies: function() {
 return window.bbcpage.loadModule(['orb/cookies'])
 .then(function(bbccookies) {
 return !!bbccookies.cookiesEnabled() && !!bbccookies.readPolicy('performance');
 });
 } 
 allowsFunctionalCookies: function() {
 return window.bbcpage.loadModule(['orb/cookies'])
 .then(function(bbccookies) {
 return !!bbccookies.cookiesEnabled() && !!bbccookies.readPolicy('personalisation');
 });
 } 
 getCookieValue: function(cookieName) {
 return window.bbcpage.loadModule(['orb/cookies'])
 .then(function(bbccookies) {
 return bbccookies.get(cookieName);
 });
 } 
 resetCookiesPreferences: function() {
 return window.bbcpage.loadModule(['orb/cookies'])
 .then(function(bbccookies) {
 bbccookies.setDefaultCookiesSingleDomain();
 });
 } 
 hasCookiesEnabled: function() {
 return window.bbcpage.loadModule(['orb/cookies'])
 .then(function(bbccookies) {
 return !!bbccookies.cookiesEnabled();
 });
 } 
 hasSeenCookieBanner: function() {
 return window.bbcpage.loadModule(['orb/cookies'])
 .then(function (bbccookies) {
 return !!bbccookies.isCookiePolicySet();
 });
 } 
 logEvent: function (verb noun extraLabels) {
 return window.bbcuser.hasCookiesEnabled()
 .then(function(allowsCookies) {
 if (allowsCookies) {
 return window.bbcpage.loadModule(['istats-1'])
 .then(function(istats) {
 istats.log(verb noun extraLabels);
 });
 } else {
 throw new Error('User cannot be tracked due to cookies preferences.');
 }
 });
 } 
 };
 
 }());</script><script src="https://nav.files.bbci.co.uk/orbit/a07e26191aed6a8725358c88df999791/js/require.min.js"></script> <script src="https://nav.files.bbci.co.uk/orbit-webmodules/0.0.2-398.6553dba/cookie-banner/cookie-library.min.js"></script><script type="text/javascript">if (window.define !== undefined) {
 define('orb/cookies' function() {
 return window.bbccookies;
 });
 }</script> <script src="https://nav.files.bbci.co.uk/orbit/a07e26191aed6a8725358c88df999791/js/api.min.js"></script><script type="text/javascript">window.bbcFlagpoles_istats="ON" require.config({paths:{"istats-1":"https://nav.files.bbci.co.uk/orbit-webmodules/0.0.2-398.6553dba/istats/istats-1"}}) require(["istats-1" "orb/cookies"] function(a t){if(t.isAllowed("s1")){var e=(o=document.location.href.match(/^(?:https|http):\/\/\w*\.(?:(int|test|stage|live|)\.)?bbc\.(?:co\.uk|com)/))?void 0===o[1]||""===o[1]||"live"===o[1]?"//sa.bbc.co.uk/bbc/bbc/s":"//sa.bbc.co.uk/bbc/"+o[1]+"/s":"//sa.bbc.co.uk/bbc/test/s";a.addCollector({name:"default" url:e separator:"&"});var s="news.technology.story.26415021.page";a.setCountername(s) window.istats_countername&&a.setCountername(window.istats_countername) a.addLabels("ml_name=webmodule&ml_version=0.0.2-398.6553dba&blq_e=orbit&blq_r=orbit&blq_s=orbit&blq_v=default&language=en&pal_route=asset&language=en-GB&pal_webapp=tabloid&prod_name=news&app_name=news&cps_asset_id=26415021&page_type=Story&section=%2Fnews%2Ftechnology&first_pub=2014-03-03T07%3A36%3A59%2B00%3A00&last_editorial_update=2014-03-03T10%3A22%3A55%2B00%3A00&curie=52db3466-0acb-3a48-98c6-21a6e4f5f1cf&title=An+hour+to+catch+the+coding+bug&has_video=&topic_names=&topic_ids=&for_nation=il&app_version=1.303.0&app_type=responsive&bbc_site=news")}var o});</script><link rel="stylesheet" href="https://mybbc.files.bbci.co.uk/s/id/account-idcta/1.23.4/style/id-cta.css"><!--[if IE 8]><link href="https://mybbc.files.bbci.co.uk/s/id/account-idcta/1.23.4/style/ie8.css" rel="stylesheet"/> <![endif]--><script type="text/javascript">(function() {if (!window.require) {throw new Error('idcta: could not find require module');}if (typeof(map) == 'undefined') {var map = {};}if (!!document.createElementNS && !!document.createElementNS('http://www.w3.org/2000/svg' 'svg').createSVGRect) {document.documentElement.className += ' id-svg';}var ptrt = new RegExp("[\\?&]ptrt=([^&]*)").exec(document.location.href);var ENDPOINT_URL = 'https://idcta.api.bbc.co.uk';var ENDPOINT_CONFIG = ('/idcta/config?callback=&ptrt=' + encodeURIComponent((ptrt ? ptrt[1] : document.location.href))).replace(/\&amp;/g '&');var ENDPOINT_TRANSLATIONS = '/idcta/translations?callback=';function hasPromise() {var P = window.Promise;var promiseToString = null;if (P) {try {promiseToString = Object.prototype.toString.call(P.resolve());} catch(e) {/*silently ignored*/}}return (promiseToString === '[object Promise]' && !P.cast);}if (hasPromise()) {define('idcta/es6-promise' function() {return window.Promise;});define('idcta-v2/es6-promise' function() {return window.Promise;});}map['idcta-v2'] = 'https://mybbc.files.bbci.co.uk/s/id/account-idcta/1.23.4/modules/idcta-v2';map['idcta-v2/config'] = ENDPOINT_URL + ENDPOINT_CONFIG;map['idcta-v2/translations'] = ENDPOINT_URL + ENDPOINT_TRANSLATIONS;map['idcta'] = 'https://mybbc.files.bbci.co.uk/s/id/account-idcta/1.8.2/modules/idcta';map['idcta-v2/idcta-1'] = 'https://mybbc.files.bbci.co.uk/s/id/account-idcta/1.23.4/modules/idcta-v2/dist/idcta-1.min';const idctaShim = {deps: ['idcta-v2/idcta-1'] };require({shim: {'idcta-v2/statusbar': idctaShim 'idcta-v2/id-config': idctaShim} map: {'*': {'idcta/idcta-1': 'idcta-v2/idcta-1' 'idcta': 'idcta-v2' }} paths: map});window.idctaBaseUrl = ENDPOINT_URL;define('idcta/config' ['idcta-v2/config'] function(data) {return data;});define('idcta/translations' ['idcta-v2/translations'] function(data) {return data;});})();</script> <!-- BBCDOTCOM head --><script type="text/javascript">/*<![CDATA[*/ var _sf_startpt = (new Date()).getTime(); /*]]>*/</script><style type="text/css">.bbccom_display_none{display:none;}</style><script type="text/javascript">/*<![CDATA[*/ var bbcdotcomConfig googletag = googletag || {}; googletag.cmd = googletag.cmd || [] bbcdotcomScripts = [] tp = window.tp || []; var bbcdotcom = false; (function(){ if(typeof require !== 'undefined') { require({ paths:{ "bbcdotcom":"https://static.bbc.co.uk/bbcdotcom/3.3.0/script" } }); } })(); /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ var bbcdotcom = { adverts: { keyValues: { set: function() {} } } advert: { write: function () {} show: function () {} isActive: function () { return false; } layout: function() { return { reset: function() {} } } } config: { init: function() {} isActive: function() {} setSections: function() {} isAdsEnabled: function() {} setAdsEnabled: function() {} isAnalyticsEnabled: function() {} setAnalyticsEnabled: function() {} setAssetPrefix: function() {} setFlagpoles: function() {} setVersion: function () {} setJsPrefix: function() {} setSwfPrefix: function() {} setCssPrefix: function() {} setConfig: function() {} getAssetPrefix: function() {} getJsPrefix: function () {} getSwfPrefix: function () {} getCssPrefix: function () {} isOptimizelyEnabled: function() {} } survey: { init: function(){ return false; } } data: {} init: function() {} objects: function(str) { return false; } locale: { set: function() {} get: function() {} } setAdKeyValue: function() {} utils: { addEvent: function() {} addHtmlTagClass: function() {} log: function () {} } addLoadEvent: function() {} }; /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ (function(){ if (typeof orb !== 'undefined' && typeof orb.fig === 'function') { if (orb.fig('ad') && orb.fig('uk') == 0) { bbcdotcom.data = { ads: (orb.fig('ad') ? 1 : 0) stats: (orb.fig('uk') == 0 ? 1 : 0) statsProvider: orb.fig('ap') }; } } else { document.write('<script type="text/javascript" src="https://www.bbc.com/wwscripts/data">\x3C/script>'); } })(); /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ (function(){ if (typeof orb === 'undefined' || typeof orb.fig !== 'function') { bbcdotcom.data = { ads: bbcdotcom.data.a stats: bbcdotcom.data.b statsProvider: bbcdotcom.data.c }; } if (bbcdotcom.data.ads == 1) { document.write('<script type="text/javascript" src="https://www.bbc.com/wwscripts/flag">\x3C/script>'); } })(); /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ (function(){ if (window.bbcdotcom && (typeof bbcdotcom.flag == 'undefined' || (typeof bbcdotcom.data.ads !== 'undefined' && bbcdotcom.flag.a != 1))) { bbcdotcom.data.ads = 0; } if (/[?|&]ads/.test(window.location.href) || /(^|; )ads=on; /.test(document.cookie) || /; ads=on(; |$)/.test(document.cookie)) { bbcdotcom.data.ads = 1; bbcdotcom.data.stats = 1; } if (window.bbcdotcom && (bbcdotcom.data.ads == 1 || bbcdotcom.data.stats == 1)) { bbcdotcom.assetPrefix = "https://static.bbc.co.uk/bbcdotcom/3.3.0/"; if (/(sandbox|int)(.dev)*.bbc.co*/.test(window.location.href) || /[?|&]ads-debug/.test(window.location.href) || document.cookie.indexOf('ads-debug=') !== -1) { document.write('<script type="text/javascript" src="https://static.bbc.co.uk/bbcdotcom/3.3.0/script/dist/bbcdotcom.dev.js">\x3C/script>'); } else { document.write('<script type="text/javascript" src="https://static.bbc.co.uk/bbcdotcom/3.3.0/script/dist/bbcdotcom.js">\x3C/script>'); } } })(); /*]]>*/</script><script type="text/javascript">if (window.bbcdotcom && bbcdotcom.data.stats == 1) { document.write('<link rel="dns-prefetch" href="//secure-us.imrworldwide.com/">'); document.write('<link rel="dns-prefetch" href="//me-cdn.effectivemeasure.net/">'); document.write('<link rel="dns-prefetch" href="//ssc.api.bbc.com/">'); } if (window.bbcdotcom && bbcdotcom.data.ads == 1) { document.write('<link rel="dns-prefetch" href="//www.googletagservices.com/">'); document.write('<link rel="dns-prefetch" href="//bbc.gscontxt.net/">'); document.write('<link rel="dns-prefetch" href="//tags.crwdcntrl.net/">'); document.write('<link rel="dns-prefetch" href="//ad.crwdcntrl.net/">'); }</script><script type="text/javascript">if (window.bbcdotcom && bbcdotcom.data.ads == 1) { document.write('<meta name="google-site-verification" content="auTeTTwSt_KBY_4iDoR00Lwb7-qzx1IgzJy6ztaWgEI" />'); }</script><script type="text/javascript">/*<![CDATA[*/ (function(){ var GDPR_COUNTRIES = ['AT' 'BE' 'BG' 'HR' 'CY' 'CZ' 'DK' 'EE' 'FI' 'FR' 'DE' 'GR' 'HU' 'IE' 'IT' 'LV' 'LT' 'LU' 'MT' 'NL' 'PL' 'PT' 'RO' 'SK' 'SI' 'ES' 'SE' 'IS' 'LI' 'NO' 'CH']; if (window.bbcdotcom && (bbcdotcom.data.ads == 1 || bbcdotcom.data.stats == 1)) { bbcdotcomConfig = {"adFormat":"standard" "adKeyword":"" "adMode":"smart" "adsEnabled":true "appAnalyticsSections":"" "asyncEnabled":true "disableInitialLoad":false "advertInfoPageUrl":"https:\/\/www.bbc.com\/privacy\/cookies\/international\/" "advertisementText":"Advertisement" "analyticsEnabled":true "sherlockEnabled":false "appName":"" "assetPrefix":"https:\/\/static.bbc.co.uk\/bbcdotcom\/3.3.0\/" "customAdParams":[] "customStatsParams":[] "headline":"" "id":"" "inAssociationWithText":"in association with" "keywords":"" "language":"" "orbTransitional":false "optimizelyEnabled":true "palEnv":"live" "productName":"" "sections":[] "comScoreEnabled":true "comscoreSite":"bbc" "comscoreID":"19293874" "comscorePageName":"" "slots":"" "sponsoredByText":"is sponsored by" "adsByGoogleText":"Ads by Google" "summary":"" "type":"" "features":{"testfeature":{"name":"testfeature" "envs":["sandbox" "int" "test"] "on":true "options":{} "override":null} "lxadverts":{"name":"lxadverts" "envs":[] "on":true "options":{} "override":null}} "staticBase":"\/bbcdotcom" "staticHost":"https:\/\/static.bbc.co.uk" "staticVersion":"3.3.0" "staticPrefix":"https:\/\/static.bbc.co.uk\/bbcdotcom\/3.3.0" "dataHttp":"tps.bbc.com" "dataHttps":"www.bbc.com" "flagHttp":"www.bbc.co.uk" "flagHttps":"www.bbc.co.uk" "analyticsHttp":"sa.bbc.com" "analyticsHttps":"ssa.bbc.com"}; bbcdotcom.config.init(bbcdotcomConfig bbcdotcom.data window.location window.document); bbcdotcom.config.setFlagpoles(bbcdotcom.flag || {}); bbcdotcom.config.setAssetPrefix("https://static.bbc.co.uk/bbcdotcom/3.3.0/"); bbcdotcom.config.setVersion("3.3.0"); if (window.bbcuser && window.bbcuser.getCountry && typeof(window.bbcuser.getCountry) === 'function') { window.bbcuser.getCountry().then(function(countryCode) { var isEU = countryCode ? GDPR_COUNTRIES.indexOf(countryCode.toUpperCase()) !== -1 : false; bbcdotcom.config.setEU(isEU); }); } else if (window.orb && window.orb.fig && typeof(window.orb.fig) === 'function') { bbcdotcom.config.setEU(window.orb.fig('eu')); } document.write('<!--[if IE 7]><script type="text/javascript">bbcdotcom.config.setIE7(true);\x3C/script><![endif]-->'); document.write('<!--[if IE 8]><script type="text/javascript">bbcdotcom.config.setIE8(true);\x3C/script><![endif]-->'); document.write('<!--[if IE 9]><script type="text/javascript">bbcdotcom.config.setIE9(true);\x3C/script><![endif]-->'); if (/[?|&]ex-dp/.test(window.location.href) || document.cookie.indexOf('ex-dp=') !== -1) { bbcdotcom.utils.addHtmlTagClass('bbcdotcom-ex-dp'); } } })(); /*]]>*/</script><script type="text/javascript">var initOptimizely = (function(isEnabled){ if(!isEnabled) return; var logger = window.bbcdotcom.Logger('bbcdotcom:head:optimizely'); /* Allow Optimizely in these paths */ var allowPaths = ['/' '/wwhp']; /* Only run on optimizely on homepage */ if (bbcdotcom.utils && allowPaths.indexOf(window.location.pathname) !== -1){ /* set correct OptimizelyURL for prod or sandbox */ var optimizelyURL = "https://cdn.optimizely.com/public/4621041136/s/bbccom_sandbox.js"; if(window.location.hostname === 'www.bbc.com') { optimizelyURL = "https://cdn.optimizely.com/public/4621041136/s/bbccom_prod.js"; } /* Set cookie to 1 year */ window['optimizely'] = window['optimizely'] || []; window['optimizely'].push({ "type": "cookieExpiration" "cookieExpirationDays": 365 }); document.write('<script type="text/javascript" src="'+optimizelyURL+'">\x3C/script>'); } })( bbcdotcom.config.isOptimizelyEnabled() );</script><script type="text/javascript">/*<![CDATA[*/ if ( window.bbcdotcom && bbcdotcom.data && bbcdotcom.data.ads && bbcdotcom.data.ads == 1 && bbcdotcom.config && bbcdotcom.config.isGrapeshotEnabled && bbcdotcom.config.isGrapeshotEnabled() && bbcdotcom.config.isWorldService && !bbcdotcom.config.isWorldService() ) { var gs_channels="DEFAULT"; (function () { var gsurl = window.location.href.split("?")[0]; bbcdotcomScripts.push({src:'https://bbc.gscontxt.net/?url='+encodeURIComponent(gsurl)}); })(); } /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ if (window.bbcdotcom && bbcdotcom.config && bbcdotcom.config.isLotameActive && bbcdotcom.config.isLotameActive()&& bbcdotcom.config.isLotameEnabled && bbcdotcom.config.isLotameEnabled()){ (function () { var clientId lotameUrl lotameAudienceUrl; clientId = (bbcdotcom.config.isWorldService && bbcdotcom.config.isWorldService()) ? '10826' : '10816'; lotameUrl = 'https://tags.crwdcntrl.net/c/'+clientId+'/cc.js?ns='+clientId; lotameAudienceUrl = 'https://ad.crwdcntrl.net/5/c=10815/pe=y/var=ccauds'; bbcdotcomScripts.push({src:lotameUrl id:"LOTCC"+clientId}); bbcdotcomScripts.push({src:lotameAudienceUrl}); })(); } /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ /** * ASYNC waits to make any gpt requests until the bottom of the page */ if ( window.bbcdotcom && bbcdotcom.data && bbcdotcom.data.ads && bbcdotcom.data.ads == 1 && bbcdotcom.config && bbcdotcom.config.isAsync && bbcdotcom.config.isAsync() ) { (function () { bbcdotcomScripts.push({src:'https://securepubads.g.doubleclick.net/tag/js/gpt.js'}); })(); } /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ /* Load Lotame Grapeshot and GPT without blocking rendering but executing in order */ if ( bbcdotcomScripts && bbcdotcomScripts.length > 0 ) { (function () { bbcdotcomScripts.forEach(function(item) { var script = document.createElement('script'); script.async = false; if(item.id) script.id = item.id; script.src = item.src; document.head.appendChild(script); }); })(); } /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ (function() { window.bbcdotcom.head = true; }()); /*]]>*/</script><script type="text/javascript">// Globally available search context
 window.SEARCHBOX={"variant":"default" "locale":"en" "feature":"" "navSearchboxStaticPrefix":"https://nav.files.bbci.co.uk/searchbox/e8104f1649a8e9020708db403265fc37/" "searchboxAppStaticPrefix":"https://nav.files.bbci.co.uk/searchbox/e8104f1649a8e9020708db403265fc37/drawer" "searchFormHtml":"<div tabindex=\"-1\" data-reactroot=\"\" data-reactid=\"1\" data-react-checksum=\"842287743\"><div data-reactid=\"2\"><section class=\"se-searchbox-panel\" data-reactid=\"3\"><div class=\"se-g-wrap\" data-reactid=\"4\"><div class=\"se-g-layout\" data-reactid=\"5\"><div class=\"se-g-layout__item se-searchbox-title\" aria-hidden=\"true\" data-reactid=\"6\">search</div><div class=\"se-g-layout__item se-searchbox\" data-reactid=\"7\"><form accept-charset=\"utf-8\" id=\"searchboxDrawerForm\" method=\"get\" action=\"https://search.bbc.co.uk/search\" data-reactid=\"8\"><label class=\"se-searchbox__input\" for=\"se-searchbox-input-field\" data-reactid=\"9\"><span class=\"se-sr-only\" data-reactid=\"10\">Search Term</span><input type=\"text\" name=\"q\" value=\"\" id=\"se-searchbox-input-field\" class=\"se-searchbox__input__field\" maxlength=\"512\" autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" tabindex=\"0\" data-reactid=\"11\"/></label><input type=\"hidden\" name=\"scope\" value=\"\" data-reactid=\"12\"/><button type=\"submit\" class=\"se-searchbox__submit\" tabindex=\"0\" data-bbc-container=\"se-searchbox-panel\" data-bbc-title=\"search-icon\" data-bbc-metadata=\"{&quot;PAR&quot;:&quot;form::1&quot; &quot;CHD&quot;:&quot;button::1&quot;}\" data-reactid=\"13\">Search</button><button type=\"button\" class=\"se-searchbox__clear se-searchbox__clear--visible\" tabindex=\"0\" data-bbc-container=\"se-searchbox-panel\" data-bbc-title=\"clear-icon\" data-bbc-metadata=\"{&quot;PAR&quot;:&quot;form::1&quot; &quot;CHD&quot;:&quot;button::2&quot;}\" data-reactid=\"14\">Close</button></form></div></div></div></section><div aria-live=\"polite\" aria-atomic=\"true\" class=\"se-suggestions-container\" data-reactid=\"15\"><section class=\"se-g-wrap\" data-reactid=\"16\"></section></div></div></div>" "searchScopePlaceholder":"<input type=\"hidden\" name=\"scope\" id=\"orb-search-scope\" value=\"all\">" "searchScopeParam":"?scope=all" "searchScopeTemplate":"all" "searchPlaceholderWrapperStart":"" "searchPlaceholderWrapperEnd":""};
 window.SEARCHBOX.suppress = false;
 window.SEARCHBOX.searchScope = SEARCHBOX.searchScopeTemplate.split('-')[0];</script><link rel="stylesheet" href="https://nav.files.bbci.co.uk/searchbox/e8104f1649a8e9020708db403265fc37//css/main.css"><!--[if IE 8]>
 <script type="text/javascript" src="https://nav.files.bbci.co.uk/searchbox/e8104f1649a8e9020708db403265fc37//script/html5shiv.min.js"></script>
 <script type="text/javascript">window['searchboxIEVersion'] = 8;</script>
 <link rel="stylesheet" href="https://nav.files.bbci.co.uk/searchbox/e8104f1649a8e9020708db403265fc37//css/ie8.css">
<![endif]--><!--[if IE 9]>
 <script type="text/javascript">window['searchboxIEVersion'] = 9;</script>
<![endif]--><script type="text/javascript">require.config({
 "paths": {
 "orb/async/_footerpromo": 'https://nav.files.bbci.co.uk/navpromo/14e5b4661a09bc7754808edab113a159/js/async/_footerpromo'
 }
 });</script> <script type="text/javascript">"use strict";!function(){window.__reverbStaticLocation="https://mybbc-analytics.files.bbci.co.uk/reverb-client-js/" window.__smarttagVersion="5.17.1" window.__reverb={} window.__reverb.__reverbLoadedPromise=new Promise(function(e n){window.__reverb.__resolveReverbLoaded=e window.__reverb.__rejectReverbLoaded=n}) window.__reverb.__reverbTimeout=setTimeout(function(){window.__reverb.__rejectReverbLoaded()} 5e3);var n=function(r d){window.__reverb.__reverbLoadedPromise.then(function(e){if(r&&r.detail){var n=r.detail.label t=r.detail.type i=r.detail.elem o=r.detail.originalEvent;r.detail.isClick&&(d=r.detail.isClick) e.userActionEvent(t n r.detail i o d)}} function(){console.log("Reverb failed to load. Event not sent")})};document.addEventListener("bbc-user-event" function(e){n(e !1)}) document.addEventListener("bbc-user-click" function(e){n(e !0)}) document.addEventListener("bbc-page-updated" function(){window.__reverb.__reverbLoadedPromise.then(function(e){e.initialise().then(function(){return e.viewEvent()})} function(){console.log("Reverb failed to load. Event not sent")})})}();</script><script type="text/javascript" src="https://mybbc-analytics.files.bbci.co.uk/reverb-client-js/reverb-1.2.0.js" async=""></script>
 <link type="text/css" rel="stylesheet" href="https://static.bbc.co.uk/news/1.303.03507/stylesheets/services/news/core.css">
 <!--[if lt IE 9]>
 <link type="text/css" rel="stylesheet" href="https://static.bbc.co.uk/news/1.303.03507/stylesheets/services/news/old-ie.css">
 <script src="https://static.bbc.co.uk/news/1.303.03507/js/vendor/html5shiv/html5shiv.js"></script>
 <![endif]-->
 <script id="news-loader"> if (document.getElementById("responsive-news")) { window.bbcNewsResponsive = true; } var isIE = (function() { var undef v = 3 div = document.createElement('div') all = div.getElementsByTagName('i'); while ( div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->' all[0] ); return v > 4 ? v : undef; }()); var modernDevice = 'querySelector' in document && 'localStorage' in window && 'addEventListener' in window forceCore = document.cookie.indexOf('ckps_force_core') !== -1; window.cutsTheMustard = modernDevice && !forceCore; if (window.cutsTheMustard) { document.documentElement.className += ' ctm'; var insertPoint = document.getElementById('news-loader') config = {"asset":{"asset_id":"26415021" "asset_locator":"urn:bbc:cps:asset:26415021" "asset_uri":"\/news\/technology-26415021" "original_asset_uri":null "first_created":{"date":"2014-03-03 07:36:59" "timezone_type":3 "timezone":"Europe\/London"} "first_published":{"date":"2014-03-03 10:22:55" "timezone_type":3 "timezone":"Europe\/London"} "last_updated":{"date":"2014-03-03 10:22:55" "timezone_type":3 "timezone":"Europe\/London"} "options":{"allowDateStamp":true "allowPrintingSharingLinks":true "allowHeadline":true "allowRightHandSide":true "allowRelatedStoriesBox":true "includeComments":false "allowAdvertising":true "isIgorSeoTagsEnabled":false} "section":{"name":"Technology" "id":"99113" "uri":"\/news\/technology" "urlIdentifier":"\/news\/technology"} "language":"en-gb" "edition":"International" "audience":null "iStats_counter_name":"news.technology.story.26415021.page" "type":"STY" "curie":"asset:52db3466-0acb-3a48-98c6-21a6e4f5f1cf" "length":5362 "byline":{"name":"By Mark Ward" "persons":{"0":{"name":"Mark Ward" "function":"Technology correspondent BBC News"}} "title":"Technology correspondent BBC News"} "headline":"An hour to catch the coding bug" "mediaType":null "topicTags":null} "smpBrand":null "staticHost":"https:\/\/static.bbc.co.uk" "environment":"live" "locatorVersion":"0.46.3" "pathPrefix":"\/news" "staticPrefix":"https:\/\/static.bbc.co.uk\/news\/1.303.03507" "jsPath":"https:\/\/static.bbc.co.uk\/news\/1.303.03507\/js" "cssPath":"https:\/\/static.bbc.co.uk\/news\/1.303.03507\/stylesheets\/services\/news" "cssPostfix":"" "dynamic":null "features":{"localnews":true "video":true "liveeventcomponent":true "mediaassetpage":true "gallery":true "sportstories":true "radiopromo":true "fromothernewssites":true "locallive":true "weather":true} "features2":{"apple_smart_banner":true "svg_brand":true "waf_deprecation_notice":true "local_news_cta":true "chartbeat":true "connected_stream":true "connected_stream_promo":true "dynatrace_beacon":true "nav":true "pulse_survey":false "local_survey":true "correspondents":true "blogs":true "open_graph":true "follow_us":true "marketdata_markets":true "marketdata_shares":true "nations_pseudo_nav":true "politics_election2015_topic_pages":true "responsive_breaking_news":true "live_event":true "most_popular":true "most_popular_tabs":true "routing":true "radiopromonownext":true "config_based_layout":true "orbit":true "map_most_watched":true "top_stories_promo":true "features_and_analysis":true "section_labels":true "index_title":true "share_tools":true "extracted_share_tools":true "local_live_promo":true "adverts":true "adverts_async":true "adexpert":true "igor_geo_redirect":true "igor_device_redirect":true "live":true "comscore_mmx":true "find_local_news":true "comments":true "comments_enhanced":true "browser_notify":true "stream_grid_promo":true "breaking_news":false "top_stories_max_volume":true "contact_form":true "channel_page":true "portlet_global_variants":true "suppress_lep_timezone":true "story_sticky_player":true "story_end_slate":true "story_smp_preview":true "embed_player_pid":true "cedexis":true "mpulse":true "story_single_column_layout":true "story_image_copyright_labels":true "ovp_resolve_primary_media_vpids":false "media_player":true "services_bar":true "live_v2_stream":true "ldp_tag_augmentation":true "map_related_topic_tags":true "olympics_tables":true "embedephant-social-embeds":true "interactive-social-embeds":true "social-embeds":true "amp_link":true "https_redirect":true "preload_fig":true "preconnect_oftused_domains":true "ati_analytics":true} "configuration":{"showtimestamp":"1" "showweather":"1" "showsport":"1" "showolympics":"1" "showfeaturemain":"1" "candyplatform":"EnhancedMobile" "showwatchlisten":"1" "showspecialreports":"" "videotopiccandyid":"" "showvideofeedsections":"1" "showstorytopstories":"" "showstoryfeaturesandanalysis":"1" "showstorymostpopular":"" "showgallery":"1" "cms":"cps" "channelpagecandyid":"10318089"} "pollingHost":"https:\/\/polling.bbc.co.uk" "service":"news" "locale":"en-GB" "locatorHost":null "locatorFlagPole":true "local":{"allowLocationLookup":true} "isWorldService":false "isChannelPage":false "languageVariant":"" "commentsHost":"https:\/\/www.bbc.co.uk" "search":null "comscoreAnalytics":null}; config.configuration['get'] = function (key) { return this[key.toLowerCase()]; }; var bootstrapUI=function(){var e=function(){if(navigator.userAgent.match(/(Android (2.0|2.1))|(Nokia)|(OSRE\/)|(Opera (Mini|Mobi))|(w(eb)?OSBrowser)|(UCWEB)|(Windows Phone)|(XBLWP)|(ZuneWP)/))return!1;if(navigator.userAgent.match(/MSIE 10.0/))return!0;var e t=document n=t.head||t.getElementsByTagName("head")[0] r=t.createElement("style") s=t.implementation||{hasFeature:function(){return!1}};r.type="text/css" n.insertBefore(r n.firstChild) e=r.sheet||r.styleSheet;var i=s.hasFeature("CSS2" "")?function(t){if(!e||!t)return!1;var n=!1;try{e.insertRule(t 0) n=!/unknown/i.test(e.cssRules[0].cssText) e.deleteRule(e.cssRules.length-1)}catch(r){}return n}:function(t){return e&&t?(e.cssText=t 0!==e.cssText.length&&!/unknown/i.test(e.cssText)&&0===e.cssText.replace(/\r+|\n+/g "").indexOf(t.split(" ")[0])):!1};return i('@font-face{ font-family:"font";src:"font.ttf"; }')}();e&&(document.getElementsByTagName("html")[0].className+=" ff") function(){var e=document.documentElement.style;("flexBasis"in e||"WebkitFlexBasis"in e||"msFlexBasis"in e)&&(document.documentElement.className+=" flex")}();var t n r s i a={} o=function(){var e=document.documentElement.clientWidth n=window.innerWidth r=n>1.5*e;t=r?e:n} u=function(e){var t=document.createElement("link");t.setAttribute("rel" "stylesheet") t.setAttribute("type" "text/css") t.setAttribute("href" n+e+r+".css") t.setAttribute("media" i[e]) s.parentNode.insertBefore(t s) delete i[e]} c=function(e n r){n&&!r&&t>=n&&u(e) r&&!n&&r>=t&&u(e) n&&r&&t>=n&&r>=t&&u(e)} l=function(e){if(a[e])return a[e];var t=e.match(/\(min\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/) n=e.match(/\(max\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/) r=t&&parseFloat(t[1])||null s=n&&parseFloat(n[1])||null;return a[e]=[r s] a[e]} f=function(){var e=0;for(var t in i)e++;return e} m=function(){f()||window.removeEventListener("resize" d !1);for(var e in i){var t=i[e] n=l(t);c(e n[0] n[1])}} d=function(){o() m()} h=function(e t){i=e n=t.path+("/"!==t.path.substr(-1)?"/":"") r=t.postfix s=t.insertBefore o() m() window.addEventListener("resize" d !1)};return{stylesheetLoaderInit:h}}(); var stylesheets = {"compact":"(max-width: 599px)" "tablet":"(min-width: 600px) and (max-width: 1007px)" "wide":"(min-width: 1008px)"}; bootstrapUI.stylesheetLoaderInit(stylesheets { path: 'https://static.bbc.co.uk/news/1.303.03507/stylesheets/services/news' postfix: '' insertBefore: insertPoint }); var loadRequire = function(){ var js_paths = {"jquery-1.9":"vendor\/jquery-1\/jquery" "jquery-1":"https:\/\/static.bbc.co.uk\/frameworks\/jquery\/0.4.1\/sharedmodules\/jquery-1.7.2" "demi-1":"https:\/\/static.bbc.co.uk\/frameworks\/demi\/0.10.1\/sharedmodules\/demi-1" "swfobject-2":"https:\/\/static.bbc.co.uk\/frameworks\/swfobject\/0.1.10\/sharedmodules\/swfobject-2" "jquery":"vendor\/jquery-2\/jquery.min" "domReady":"vendor\/require\/domReady" "translation":"module\/translations\/en-GB" "bump-3":"\/\/emp.bbci.co.uk\/emp\/bump-3\/bump-3"}; js_paths.navigation = 'module/nav/navManager'; require.config({ baseUrl: 'https://static.bbc.co.uk/news/1.303.03507/js' map: { 'vendor/locator': { 'module/bootstrap': 'vendor/locator/bootstrap' 'locator/stats': 'vendor/locator/stats' 'locator/locatorView': 'vendor/locator/locatorView' } } paths: js_paths waitSeconds: 30 }); define('config' function () { return config; }); require(["compiled\/all"] function() {
 require(['domReady'] function (domReady) { domReady(function () { require(["module\/dotcom\/handlerAdapter" "module\/stats\/statsSubscriberAdapter" "module\/alternativeJsStrategy\/controller" "module\/iconLoaderAdapter" "module\/polyfill\/location.origin" "module\/components\/breakingNewsAdapter" "module\/indexTitleAdaptor" "module\/navigation\/handlerAdaptor" "module\/noTouchDetectionForCss" "module\/components\/stickyPlayer\/mainAdapter" "module\/components\/responsiveImage" "module\/components\/timestampAdaptor" "module\/components\/twiteAdapter" "module\/tableScrollAdapter" "module\/userScrollAdapter" "module\/components\/mediaPlayer\/mainAdapter" "module\/endSlateAdaptor" "module\/components\/fauxBlockLink"] function() { require(["module\/strategiserAdaptor"]); }); }); }); });
 }; loadRequire(); } else { var l = document.createElement('link'); l.href = 'https://static.bbc.co.uk/news/1.303.03507/icons/generated/icons.fallback.css'; l.rel = 'stylesheet'; document.getElementsByTagName('head')[0].appendChild(l); } </script> <script type="text/javascript"> /*<![CDATA[*/ bbcdotcom.init({adsToDisplay:['leaderboard' 'sponsor_section' 'mpu' 'infeed_news_story' 'outbrain_ar_5' 'outbrain_ar_7' 'outbrain_ar_8' 'outbrain_ar_9' 'native' 'mpu_bottom' 'adsense' 'inread'] asyncEnabled:true }); /*]]>*/ </script> <noscript><link href="https://static.bbc.co.uk/news/1.303.03507/icons/generated/icons.fallback.css" rel="stylesheet"></noscript>
 
 
 
 
 </head>
<!--[if IE]><body id="asset-type-sty" class="ie device--feature"><![endif]-->
<!--[if !IE]>--><body id="asset-type-sty" class="device--feature"><!--<![endif]-->
 <div class="direction" >
 
 <noscript><p style="position: absolute; top: -999em"><img src="https://a1.api.bbc.co.uk/hit.xiti?&col=1&from=p&ptag=js&s=598253&p=technology::news.technology.story.26415021.page&x1=[urn:bbc:cps:52db3466-0acb-3a48-98c6-21a6e4f5f1cf]&x2=[responsive]&x3=[bbc_website]&x4=[en]&x7=[article]&x8=[reverb-1.2.0-nojs]&x11=[NEWS_GNL]&x12=[NEWS]" height="1" width="1" alt=""></p></noscript> <!-- BBCDOTCOM bodyFirst --><div id="bbccom_interstitial_ad" class="bbccom_display_none"></div><div id="bbccom_interstitial" class="bbccom_display_none"><script type="text/javascript">/*<![CDATA[*/ (function() { if (window.bbcdotcom && bbcdotcom.config.isActive('ads')) { googletag.cmd.push(function() { googletag.display('bbccom_interstitial'); }); } }()); /*]]>*/</script></div><div id="bbccom_wallpaper_ad" class="bbccom_display_none"></div><div id="bbccom_wallpaper" class="bbccom_display_none"><script type="text/javascript">/*<![CDATA[*/ (function() { var wallpaper; if (window.bbcdotcom && bbcdotcom.config.isActive('ads')) { if (bbcdotcom.config.isAsync()) { googletag.cmd.push(function() { googletag.display('bbccom_wallpaper'); }); } else if (typeof googletag !== "undefined" && typeof googletag.display === "function") { googletag.display("wallpaper"); } wallpaper = bbcdotcom.adverts.adRegister.getAd('wallpaper'); } }()); /*]]>*/</script></div><script type="text/javascript">/*<![CDATA[*/ (function() { if (window.bbcdotcom && bbcdotcom.config.isActive('ads')) { document.write(unescape('%3Cscript id="gnlAdsEnabled" class="bbccom_display_none"%3E%3C/script%3E')); } if (window.bbcdotcom && bbcdotcom.config.isActive('analytics')) { document.write(unescape('%3Cscript id="gnlAnalyticsEnabled" class="bbccom_display_none"%3E%3C/script%3E')); } }()); /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ (function() { window.bbcdotcom.bodyFirst = true; }()); /*]]>*/</script> <div id="cookiePrompt"></div> <!--[if (gt IE 8) | (IEMobile)]><!--><header id="orb-banner" role="banner" aria-label="BBC"><!--<![endif]--><!--[if (lt IE 9) & (!IEMobile)]>
 <![if (IE 8)]>
 <header id="orb-banner" role="banner" class="orb-old-ie orb-ie8" aria-label="BBC">
 <![endif]>
 <![if (IE 7)]>
 <header id="orb-banner" role="banner" class="orb-old-ie orb-ie7" aria-label="BBC">
 <![endif]>
 <![if (IE 6)]>
 <header id="orb-banner" role="banner" class="orb-old-ie orb-ie6" aria-label="BBC">
 <![endif]>
 <![endif]--><div id="orb-header" class="orb-nav-pri orb-nav-pri-white orb-nav-empty" dir="ltr"><div class="orb-nav-pri-container b-r b-g-p"><div class="orb-nav-section orb-nav-blocks"><a href="https://www.bbc.co.uk">Homepage</a></div><section><div class="orb-skip-links"><h2>Accessibility links</h2><ul><li><a href="#page">Skip to content</a></li><li><a id="orb-accessibility-help" href="/accessibility/">Accessibility Help</a></li></ul></div></section><div id="mybbc-wrapper" class="orb-nav-section orb-nav-id orb-nav-focus orb-nav-id-default"><div id="idcta-statusbar" class="orb-nav-section orb-nav-focus" data-bbc-container="id-cta" data-bbc-event-type="click" data-bbc-ignore-views="1" data-bbc-metadata="{&quot;id-cta-type&quot;: &quot;statusbar-orb&quot;}" data-bbc-source="responsive_web" data-bbc-title="id-cta-sign-in"><a id="idcta-link" href="https://account.bbc.com/account?ptrt=https://www.bbc.com/news/technology-26415021"><span id="idcta-username">BBC Account</span></a></div><script type="text/javascript">require(['idcta/statusbar'] function (statusbar) {new statusbar.Statusbar({id: 'idcta-statusbar' publiclyCacheable: true});});</script><!-- Because we are now loading the notification bell CSS asynchronously we need this inline style hack to ensure that the notification div 
 is hidden by default and shown only if and when the bell code is loaded from notification-ui --><a id="notification-link" class="js-notification-link animated three" href="#" style="display: none"><span class="hidden-span">Notifications</span><div class="notification-link--triangle"></div><div class="notification-link--triangle"></div><span id="not-num"></span></a></div><nav role="navigation" aria-label="BBC" class="orb-nav"><div class="orb-nav-section orb-nav-links orb-nav-focus" id="orb-nav-links"><ul><li class="orb-nav-home"><a href="https://www.bbc.co.uk">Home</a></li><li class="orb-nav-news"><a href="https://www.bbc.co.uk/news">News</a></li><li class="orb-nav-sport"><a href="https://www.bbc.co.uk/sport">Sport</a></li><li class="orb-nav-weather"><a href="https://www.bbc.co.uk/weather">Weather</a></li><li class="orb-nav-iplayer"><a href="https://www.bbc.co.uk/iplayer">iPlayer</a></li><li class="orb-nav-sounds"><a href="https://www.bbc.co.uk/sounds">Sounds</a></li><li class="orb-nav-cbbc"><a href="https://www.bbc.co.uk/cbbc">CBBC</a></li><li class="orb-nav-cbeebies"><a href="https://www.bbc.co.uk/cbeebies">CBeebies</a></li><li class="orb-nav-food"><a href="https://www.bbc.co.uk/food">Food</a></li><li class="orb-nav-bitesize"><a href="https://www.bbc.co.uk/bitesize">Bitesize</a></li><li class="orb-nav-arts"><a href="https://www.bbc.co.uk/arts">Arts</a></li><li class="orb-nav-taster"><a href="https://www.bbc.co.uk/taster">Taster</a></li><li class="orb-nav-local"><a href="https://www.bbc.co.uk/news/localnews">Local</a></li><li class="orb-nav-tv"><a href="https://www.bbc.co.uk/tv">TV</a></li><li class="orb-nav-radio"><a href="https://www.bbc.co.uk/radio">Radio</a></li><li class="orb-nav-three"><a href="https://www.bbc.co.uk/bbcthree">Three</a></li><li id="orb-nav-more" style="width: 88px" aria-controls="orb-panel-more"><a href="#orb-footer" data-alt="More" class="istats-notrack">Menu<span class="orb-icon orb-icon-arrow"></span></a></li></ul></div></nav><div class="orb-nav-section orb-nav-search"><a class="orb-search__button" href="https://search.bbc.co.uk/search?scope&#x3D;all" title="Search the BBC">Search</a><form class="b-f" id="orb-search-form" role="search" method="get" action="https://search.bbc.co.uk/search" accept-charset="utf-8"><div><input type="hidden" name="scope" id="orb-search-scope" value="all"><label for="orb-search-q">Search the BBC</label><input id="orb-search-q" type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" name="q" placeholder="Search"><button id="orb-search-button" class="orb-search__button">Search the BBC</button><input type="hidden" name="suggid" id="orb-search-suggid"></div></form></div></div><div id="orb-panels"></div></div></header> <!-- Styling hook for shared modules only -->
<div id="orb-modules">
 <div id="site-container">
 <!--[if lt IE 9]>
<div class="browser-notify">
 <div class="browser-notify__banner">
 <div class="browser-notify__icon"></div>
 <span>This site is optimised for modern web browsers and does not fully support your version of Internet Explorer</span>
 </div>
</div>
<![endif]--> <div class="site-brand site-brand--height" role="banner" aria-label="BBC News">
 <div class="site-brand-inner site-brand-inner--height">
 <div class="navigation navigation--primary">
 <a href="/news" id="brand">
 <svg class="brand__svg" width="102" height="30" focusable="false" aria-hidden="true">
 <image xlink:href="https://static.bbc.co.uk/news/1.303.03507/img/brand/generated/news-light.svg" src="https://static.bbc.co.uk/news/1.303.03507/img/brand/generated/news-light.png" width="100%" height="100%"/>
 </svg>
 <span class="off-screen">News</span>
 </a> <h2 class="navigation__heading off-screen">BBC News Navigation</h2>
 <div class="nav-buttons">
 <a href="#core-navigation" class="navigation__section navigation__section--core" data-event="header">
 <div class="navigation__section--icon">
 <span class="off-screen">Sections</span>
 </div>
 </a>
 </div>
 </div>
 </div>
 
<div class="navigation navigation--wide">
 <ul class="navigation-wide-list" role="navigation" aria-label="BBC News" data-panel-id="js-navigation-panel-primary">
 <li>
 <a href="/news" class="navigation-wide-list__link">
 <span>Home</span>
 </a>
 </li>
 <li>
 <a href="/news/video_and_audio/headlines" class="navigation-wide-list__link">
 <span>Video</span>
 </a>
 </li>
 <li>
 <a href="/news/world" data-panel-id="js-navigation-panel-World" class="navigation-wide-list__link">
 <span>World</span>
 </a>
 </li>
 <li>
 <a href="/news/uk" data-panel-id="js-navigation-panel-UK" class="navigation-wide-list__link">
 <span>UK</span>
 </a>
 </li>
 <li>
 <a href="/news/business" data-panel-id="js-navigation-panel-Business" class="navigation-wide-list__link">
 <span>Business</span>
 </a>
 </li>
 <li class="selected">
 <a href="/news/technology" class="navigation-wide-list__link navigation-arrow--open">
 <span>Tech</span>
 </a>
 <span class="off-screen">selected</span> </li>
 <li>
 <a href="/news/science_and_environment" class="navigation-wide-list__link">
 <span>Science</span>
 </a>
 </li>
 <li>
 <a href="/news/stories" class="navigation-wide-list__link">
 <span>Stories</span>
 </a>
 </li>
 <li>
 <a href="/news/entertainment_and_arts" class="navigation-wide-list__link">
 <span>Entertainment &amp; Arts</span>
 </a>
 </li>
 <li>
 <a href="/news/health" class="navigation-wide-list__link">
 <span>Health</span>
 </a>
 </li>
 <li>
 <a href="/news/world_radio_and_tv" class="navigation-wide-list__link">
 <span>World News TV</span>
 </a>
 </li>
 <li>
 <a href="/news/in_pictures" class="navigation-wide-list__link">
 <span>In Pictures</span>
 </a>
 </li>
 <li>
 <a href="/realitycheck" class="navigation-wide-list__link">
 <span>Reality Check</span>
 </a>
 </li>
 <li>
 <a href="/news/newsbeat" class="navigation-wide-list__link">
 <span>Newsbeat</span>
 </a>
 </li>
 <li>
 <a href="/news/special_reports" class="navigation-wide-list__link">
 <span>Special Reports</span>
 </a>
 </li>
 <li>
 <a href="/news/explainers" class="navigation-wide-list__link">
 <span>Explainers</span>
 </a>
 </li>
 <li>
 <a href="/news/the_reporters" class="navigation-wide-list__link">
 <span>The Reporters</span>
 </a>
 </li>
 <li>
 <a href="/news/have_your_say" class="navigation-wide-list__link navigation-wide-list__link--last">
 <span>Have Your Say</span>
 </a>
 </li>
 </ul>
</div>
 </div>
 
 
<div id="bbccom_leaderboard_1_2_3_4" class="bbccom_slot " aria-hidden="true">
 <div class="bbccom_advert">
 <script type="text/javascript">
 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('leaderboard' [1 2 3 4]);
 }
 })();
 /*]]>*/
 </script>
 </div>
</div>
 <div id="breaking-news-container" data-polling-url="https://polling.bbc.co.uk/news/latest_breaking_news?audience=International" aria-live="polite"></div>
 <div class="container-width-only">
 <span class="index-title index-title--redundant " id="comp-index-title" data-index-title-meta="{&quot;id&quot;:&quot;comp-index-title&quot; &quot;type&quot;:&quot;index-title&quot; &quot;handler&quot;:&quot;indexTitle&quot; &quot;deviceGroups&quot;:null &quot;opts&quot;:{&quot;alwaysVisible&quot;:false &quot;onFrontPage&quot;:false} &quot;template&quot;:&quot;index-title&quot;}">
 <span class="index-title__container">
 <a href="/news/technology">Technology</a>
 </span>
 </span>
 
<div id="bbccom_sponsor_section_1_2_3_4" class="bbccom_slot " aria-hidden="true">
 <div class="bbccom_advert">
 <script type="text/javascript">
 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('sponsor_section' [1 2 3 4]);
 }
 })();
 /*]]>*/
 </script>
 </div>
</div>
 </div>
 
 <div id="page" class="configurable story " data-story-id="technology-26415021"> <div role="main"> <div class="container-width-only"> <span class="index-title index-title--redundant " id="comp-index-title" data-index-title-meta="{&quot;id&quot;:&quot;comp-index-title&quot; &quot;type&quot;:&quot;index-title&quot; &quot;handler&quot;:&quot;indexTitle&quot; &quot;deviceGroups&quot;:null &quot;opts&quot;:{&quot;alwaysVisible&quot;:false &quot;onFrontPage&quot;:false} &quot;template&quot;:&quot;index-title&quot;}">
 <span class="index-title__container">
 <a href="/news/technology">Technology</a>
 </span>
 </span>
 
<div id="bbccom_sponsor_section_1_2_3_4" class="bbccom_slot " aria-hidden="true">
 <div class="bbccom_advert">
 <script type="text/javascript">
 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('sponsor_section' [1 2 3 4]);
 }
 })();
 /*]]>*/
 </script>
 </div>
</div>
 </div> <div class="container"> <div class="container--primary-and-secondary-columns column-clearfix"> <div class="column--primary">
 
<div class="story-body">
 <h1 class="story-body__h1">An hour to catch the coding bug</h1>
 <div class="byline">
 <span class="byline__name">By Mark Ward</span>
 <span class="byline__title">Technology correspondent BBC News</span>
 </div>
 <div class="with-extracted-share-icons">
 <div class="story-body__mini-info-list-and-share">
 <div class="story-body__mini-info-list-and-share-row">
 <div class="mini-info-list-wrap">
 <ul class="mini-info-list">
 <li class="mini-info-list__item"><div class="date date--v2" data-seconds="1393842175" data-datetime="3 March 2014">3 March 2014</div></li>
</ul>
 </div>
 <div class="share-tools--event-tag">
 
 <div id="comp-pattern-library-5" class="distinct-component-group container-twite">
 
 <ul class="sharetools">
 <li class="twite__channel-out twite__channel-out--desktop twite__channel-out--facebook twite__channel-click-extracted--facebook twite__list-elements" aria-hidden="true">
 <a class="extracted__channel-link extracted__channel-link--facebook"onclick="window.open('http://www.facebook.com/dialog/feed?app_id=58567469885&amp;redirect_uri=http%3A%2F%2Fwww.bbc.co.uk%2Fnews%2Fspecial%2Fshared%2Fvj_sharetools%2Ffb_red_uri.html&amp;link=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3FSThisFB&amp;display=popup' '_blank' 'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=555 height=615').opener = null" href='#' tabindex="-1">
 <span class="extracted__icon extracted__icon--facebook" data-platform="facebook">
 <svg class="extracted-svg ex-facebook" viewBox="-17 -13 44 44" enable-background="new 0 0 44 44" width="44px" height="44px" aria-hidden="true" focusable="false">
 <g><path d="M5.73 17 L5.73 9.246 L8.333 9.246 L8.723 6.223 L5.73 6.223 L5.73 4.294 C5.73 3.419 5.973 2.823 7.228 2.823 L8.828 2.822 L8.828 0.119 C8.551 0.082 7.601 0 6.496 0 C4.189 0 2.609 1.408 2.609 3.995 L2.609 6.223 L0 6.223 L0 9.246 L2.609 9.246 L2.609 17 L5.73 17 Z"/></g>
 </svg>
 </span>
 <span class="off-screen">Share this with Facebook</span>
 </a>
 </li>
 <li class="twite__channel-out twite__channel-out--desktop twite__channel-out--messengerdesktop twite__channel-click-extracted--messengerdesktop twite__list-elements" aria-hidden="true">
 <a class="extracted__channel-link extracted__channel-link--messengerdesktop"onclick="window.open('http://www.facebook.com/dialog/send?app_id=58567469885&amp;redirect_uri=http%3A%2F%2Fwww.bbc.co.uk%2Fnews%2Fspecial%2Fshared%2Fvj_sharetools%2Ffb_red_uri.html&amp;link=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3FSThisFB&amp;display=popup' '_blank' 'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=645 height=580').opener = null" href='#' tabindex="-1">
 <span class="extracted__icon extracted__icon--messengerdesktop" data-platform="messengerdesktop">
 <svg class="extracted-svg ex-messengerdesktop" viewBox="-14 -13 44 44" enable-background="new 0 0 44 44" width="44px" height="44px" aria-hidden="true" focusable="false">
 <g><path d="M9.84804801 11.1721834 L7.54389655 8.77893955 L3.1059828 11.2323207 L7.97153994 6.06941781 L10.2756914 8.46377529 L14.7136051 6.00928046 L9.84804801 11.1721834 Z M8.90923715 0 C3.98911093 0 0 3.73074306 0 8.33125039 C0 10.9494525 1.29183939 13.2847862 3.3097816 14.8116068 L3.3097816 18 L6.35117243 16.3139269 C7.16079936 16.5399988 8.02054074 16.6625008 8.90923715 16.6625008 C13.830477 16.6625008 17.8184743 12.9328714 17.8184743 8.33125039 C17.8184743 3.73074306 13.830477 0 8.90923715 0 L8.90923715 0 Z"/></g>
 </svg>
 </span>
 <span class="off-screen">Share this with Messenger</span>
 </a>
 </li>
 <li class="twite__channel-out twite__channel-out--desktop twite__channel-out--twitter twite__channel-click-extracted--twitter twite__list-elements" aria-hidden="true">
 <a class="extracted__channel-link extracted__channel-link--twitter"onclick="window.open('https://twitter.com/intent/tweet?text=BBC%20News%20-%20An%20hour%20to%20catch%20the%20coding%20bug&amp;url=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021' '_blank' 'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=550 height=250').opener = null" href='#' class=shortenUrl data-social-url=https://twitter.com/intent/tweet?text=BBC+News+-+An+hour+to+catch+the+coding+bug&amp;amp;url= data-target-url=https://www.bbc.com/news/technology-26415021 tabindex="-1">
 <span class="extracted__icon extracted__icon--twitter" data-platform="twitter">
 <svg class="extracted-svg ex-twitter" viewBox="-13 -15 44 44" enable-background="new 0 0 44 44" width="44px" height="44px" aria-hidden="true" focusable="false">
 <g><path d="M5.80573373 15 C12.7721527 15 16.581877 9.22887915 16.581877 4.22385671 C16.581877 4.06002242 16.581877 3.89618812 16.5714931 3.73466135 C17.3122088 3.19816171 17.9525471 2.53359441 18.4602026 1.77326482 C17.7690988 2.08016568 17.0364595 2.28092039 16.28536 2.36976011 C17.0756874 1.89671742 17.6675677 1.15138674 17.9502395 0.274527115 C17.2072164 0.715264453 16.3938137 1.02678037 15.5457981 1.19407596 C14.1105174 -0.331198284 11.7118448 -0.405039095 10.1865706 1.0290879 C9.20241101 1.95440555 8.78590269 3.33315194 9.09049603 4.64844138 C6.04571636 4.4961447 3.20861397 3.05740266 1.28529161 0.691035437 C0.280364327 2.42167943 0.793788713 4.63574999 2.45751448 5.74682343 C1.85525036 5.72951699 1.26567764 5.56683646 0.738408105 5.27262698 L0.738408105 5.32108501 C0.739561868 7.12441605 2.00985456 8.67622684 3.77741896 9.03389326 C3.2201516 9.18618993 2.63519393 9.20811142 2.06754269 9.09850397 C2.56366064 10.6410847 3.98509624 11.6979313 5.60613279 11.7290828 C4.26430681 12.7824682 2.60750362 13.3547344 0.902242404 13.3535807 C0.601110348 13.3524269 0.299978293 13.3339667 7.10542736e-15 13.2982001 C1.73295152 14.4104273 3.74742113 15 5.80573373 14.9965387"/></g>
 </svg>
 </span>
 <span class="off-screen">Share this with Twitter</span>
 </a>
 </li>
 <li class="twite__channel-out twite__channel-out--desktop twite__channel-out--email twite__channel-click-extracted--email twite__list-elements" aria-hidden="true">
 <a class="extracted__channel-link extracted__channel-link--email"href='mailto:?subject=Shared%20from%20BBC%20News&amp;body=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021' tabindex="-1">
 <span class="extracted__icon extracted__icon--email" data-platform="email">
 <svg class="extracted-svg ex-email" viewBox="-7 1 27 9" enable-background="new 0 0 44 44" width="44px" height="44px" aria-hidden="true" focusable="false">
 <g><path d="M11 4.9V9H2V2.1l4.6 5L13.1 0H0.2H0v11h13V2.8L11 4.9z M10.2 2L6.7 5.8L3.2 2H10.2z"/></g>
 </svg>
 </span>
 <span class="off-screen">Share this with Email</span>
 </a>
 </li>
 <li class="twite__channel-out twite__channel-out--mobile twite__channel-out--facebook twite__channel-click-extracted--facebook twite__list-elements" aria-hidden="true">
 <a class="extracted__channel-link extracted__channel-link--facebook"onclick="window.open('http://www.facebook.com/dialog/feed?app_id=58567469885&amp;redirect_uri=http%3A%2F%2Fwww.bbc.co.uk%2Fnews%2Fspecial%2Fshared%2Fvj_sharetools%2Ffb_red_uri.html&amp;link=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3FSThisFB&amp;display=popup' '_blank' 'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=555 height=615').opener = null" href='#' tabindex="-1">
 <span class="extracted__icon extracted__icon--facebook" data-platform="facebook">
 <svg class="extracted-svg ex-facebook" viewBox="-17 -13 44 44" enable-background="new 0 0 44 44" width="44px" height="44px" aria-hidden="true" focusable="false">
 <g><path d="M5.73 17 L5.73 9.246 L8.333 9.246 L8.723 6.223 L5.73 6.223 L5.73 4.294 C5.73 3.419 5.973 2.823 7.228 2.823 L8.828 2.822 L8.828 0.119 C8.551 0.082 7.601 0 6.496 0 C4.189 0 2.609 1.408 2.609 3.995 L2.609 6.223 L0 6.223 L0 9.246 L2.609 9.246 L2.609 17 L5.73 17 Z"/></g>
 </svg>
 </span>
 <span class="off-screen">Share this with Facebook</span>
 </a>
 </li>
 <li class="twite__channel-out twite__channel-out--mobile twite__channel-out--whatsapp twite__channel-click-extracted--whatsapp twite__list-elements" aria-hidden="true">
 <a class="extracted__channel-link extracted__channel-link--whatsapp"onclick="window.open('whatsapp://send?text=BBC%20News%20%7C%20An%20hour%20to%20catch%20the%20coding%20bug%20-%20https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3Focid%3Dwsnews.chat-apps.in-app-msg.whatsapp.trial.link1_.auin' '_blank' 'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=600 height=600').opener = null" href='#' tabindex="-1">
 <span class="extracted__icon extracted__icon--whatsapp" data-platform="whatsapp">
 <svg class="extracted-svg ex-whatsapp" viewBox="-11 -11 44 44" enable-background="new 0 0 44 44" width="44px" height="44px" aria-hidden="true" focusable="false">
 <g><path d="M0.6 19.4L1.9 14.7C1 13.3 0.6 11.7 0.6 10 0.6 4.8 4.8 0.5 10 0.5 15.2 0.5 19.4 4.8 19.4 10 19.4 15.2 15.2 19.4 10 19.4 8.4 19.4 6.8 19 5.4 18.2L0.6 19.4ZM5.6 16.5L5.9 16.7C7.2 17.4 8.6 17.8 10 17.8 14.3 17.8 17.8 14.3 17.8 10 17.8 5.7 14.3 2.1 10 2.1 5.7 2.1 2.2 5.7 2.2 10 2.2 11.5 2.6 12.9 3.4 14.2L3.6 14.5 2.8 17.2 5.6 16.5Z M7.4 5.6L6.7 5.5C6.6 5.5 6.4 5.6 6.2 5.7 5.9 6 5.5 6.5 5.3 7.1 5.1 8.1 5.4 9.3 6.3 10.5 7.2 11.6 8.8 13.5 11.6 14.4 12.6 14.6 13.3 14.4 13.8 14.1 14.3 13.8 14.6 13.3 14.7 12.8L14.8 12.4C14.8 12.2 14.8 12.1 14.6 12L12.6 11.1C12.4 11 12.3 11 12.2 11.2L11.4 12.2C11.3 12.3 11.2 12.3 11.1 12.3 10.5 12.1 8.7 11.3 7.7 9.3 7.6 9.3 7.6 9.2 7.7 9.1L8.5 8.2C8.5 8.1 8.6 8 8.5 7.9L7.6 5.8C7.6 5.7 7.5 5.6 7.4 5.6Z"/></g>
 </svg>
 </span>
 <span class="off-screen">Share this with WhatsApp</span>
 </a>
 </li>
 <li class="twite__channel-out twite__channel-out--mobile twite__channel-out--messengermobile twite__channel-click-extracted--messengermobile twite__list-elements" aria-hidden="true">
 <a class="extracted__channel-link extracted__channel-link--messengermobile"href='fb-messenger://share?app_id=58567469885&amp;redirect_uri=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021&amp;link=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3FCMP%3Dshare_btn_me' target=_blank rel=noopener tabindex="-1">
 <span class="extracted__icon extracted__icon--messengermobile" data-platform="messengermobile">
 <svg class="extracted-svg ex-messengermobile" viewBox="-14 -13 44 44" enable-background="new 0 0 44 44" width="44px" height="44px" aria-hidden="true" focusable="false">
 <g><path d="M9.84804801 11.1721834 L7.54389655 8.77893955 L3.1059828 11.2323207 L7.97153994 6.06941781 L10.2756914 8.46377529 L14.7136051 6.00928046 L9.84804801 11.1721834 Z M8.90923715 0 C3.98911093 0 0 3.73074306 0 8.33125039 C0 10.9494525 1.29183939 13.2847862 3.3097816 14.8116068 L3.3097816 18 L6.35117243 16.3139269 C7.16079936 16.5399988 8.02054074 16.6625008 8.90923715 16.6625008 C13.830477 16.6625008 17.8184743 12.9328714 17.8184743 8.33125039 C17.8184743 3.73074306 13.830477 0 8.90923715 0 L8.90923715 0 Z"/></g>
 </svg>
 </span>
 <span class="off-screen">Share this with Messenger</span>
 </a>
 </li>
 <li class="twite__channel-out twite__channel-out--mobile twite__channel-out--twitter twite__channel-click-extracted--twitter twite__list-elements" aria-hidden="true">
 <a class="extracted__channel-link extracted__channel-link--twitter"onclick="window.open('https://twitter.com/intent/tweet?text=BBC%20News%20-%20An%20hour%20to%20catch%20the%20coding%20bug&amp;url=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021' '_blank' 'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=550 height=250').opener = null" href='#' class=shortenUrl data-social-url=https://twitter.com/intent/tweet?text=BBC+News+-+An+hour+to+catch+the+coding+bug&amp;amp;url= data-target-url=https://www.bbc.com/news/technology-26415021 tabindex="-1">
 <span class="extracted__icon extracted__icon--twitter" data-platform="twitter">
 <svg class="extracted-svg ex-twitter" viewBox="-13 -15 44 44" enable-background="new 0 0 44 44" width="44px" height="44px" aria-hidden="true" focusable="false">
 <g><path d="M5.80573373 15 C12.7721527 15 16.581877 9.22887915 16.581877 4.22385671 C16.581877 4.06002242 16.581877 3.89618812 16.5714931 3.73466135 C17.3122088 3.19816171 17.9525471 2.53359441 18.4602026 1.77326482 C17.7690988 2.08016568 17.0364595 2.28092039 16.28536 2.36976011 C17.0756874 1.89671742 17.6675677 1.15138674 17.9502395 0.274527115 C17.2072164 0.715264453 16.3938137 1.02678037 15.5457981 1.19407596 C14.1105174 -0.331198284 11.7118448 -0.405039095 10.1865706 1.0290879 C9.20241101 1.95440555 8.78590269 3.33315194 9.09049603 4.64844138 C6.04571636 4.4961447 3.20861397 3.05740266 1.28529161 0.691035437 C0.280364327 2.42167943 0.793788713 4.63574999 2.45751448 5.74682343 C1.85525036 5.72951699 1.26567764 5.56683646 0.738408105 5.27262698 L0.738408105 5.32108501 C0.739561868 7.12441605 2.00985456 8.67622684 3.77741896 9.03389326 C3.2201516 9.18618993 2.63519393 9.20811142 2.06754269 9.09850397 C2.56366064 10.6410847 3.98509624 11.6979313 5.60613279 11.7290828 C4.26430681 12.7824682 2.60750362 13.3547344 0.902242404 13.3535807 C0.601110348 13.3524269 0.299978293 13.3339667 7.10542736e-15 13.2982001 C1.73295152 14.4104273 3.74742113 15 5.80573373 14.9965387"/></g>
 </svg>
 </span>
 <span class="off-screen">Share this with Twitter</span>
 </a>
 </li>
 <li class="twite twite__list-elements">
 <a href="#share-tools" class="twite__share-button" aria-label="Open share panel" data-origin="page" aria-expanded="false" aria-haspopup="true">
 <svg class="twite__share-icon" width="17px" aria-hidden="true" focusable="false" viewBox="0 0 29.266 32"><path d="M5.473 22.153c1.586 0 3.01-.684 4.012-1.762l9 4.845c-.102.412-.16.85-.16 1.297 0 3.02 2.452 5.468 5.472 5.468 3.017 0 5.47-2.446 5.47-5.468 0-3.023-2.453-5.47-5.47-5.47-1.587 0-3.02.68-4.015 1.757l-9.457-5.175-.074-2.792 9.74-5.456c.99.953 2.327 1.543 3.807 1.543 3.017 0 5.47-2.45 5.47-5.474 0-3.022-2.453-5.467-5.47-5.467-3.02 0-5.473 2.444-5.473 5.466 0 .554.08 1.09.243 1.597L9.27 12.75c-.988-.95-2.326-1.537-3.797-1.537C2.447 11.213 0 13.657 0 16.68c0 3.03 2.447 5.473 5.473 5.473"/></svg><span class="twite__share-text">Share</span>
 </a>
 <div class="twite__panel arrow-top" data-share-uri="">
 <p class="twite__title" aria-hidden="true">Share this with</p>
 <span class="off-screen">These are external links and will open in a new window</span>
 <ul class="twite__channels">
 <li class="twite__channel twite__channel--email twite__channel-click--email">
 <a class="twite__channel-link"href='mailto:?subject=Shared%20from%20BBC%20News&amp;body=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021' >
 <span class="twite__icon twite__icon--email" data-platform="email"></span>
 <p class="twite__channel-text" aria-hidden="true">Email</p>
 <span class="off-screen">Share this with Email</span>
 </a>
 </li>
 <li class="twite__channel twite__channel--facebook twite__channel-click--facebook">
 <a class="twite__channel-link"onclick="window.open('http://www.facebook.com/dialog/feed?app_id=58567469885&amp;redirect_uri=http%3A%2F%2Fwww.bbc.co.uk%2Fnews%2Fspecial%2Fshared%2Fvj_sharetools%2Ffb_red_uri.html&amp;link=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3FSThisFB&amp;display=popup' '_blank' 'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=555 height=615').opener = null" href='#' >
 <span class="twite__icon twite__icon--facebook" data-platform="facebook"></span>
 <p class="twite__channel-text" aria-hidden="true">Facebook</p>
 <span class="off-screen">Share this with Facebook</span>
 </a>
 </li>
 <li class="twite__channel twite__channel--messengerdesktop twite__channel-click--messengerdesktop">
 <a class="twite__channel-link"onclick="window.open('http://www.facebook.com/dialog/send?app_id=58567469885&amp;redirect_uri=http%3A%2F%2Fwww.bbc.co.uk%2Fnews%2Fspecial%2Fshared%2Fvj_sharetools%2Ffb_red_uri.html&amp;link=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3FSThisFB&amp;display=popup' '_blank' 'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=645 height=580').opener = null" href='#' >
 <span class="twite__icon twite__icon--messengerdesktop" data-platform="messengerdesktop"></span>
 <p class="twite__channel-text" aria-hidden="true">Messenger</p>
 <span class="off-screen">Share this with Messenger</span>
 </a>
 </li>
 <li class="twite__channel twite__channel--messengermobile twite__channel-click--messengermobile">
 <a class="twite__channel-link"href='fb-messenger://share?app_id=58567469885&amp;redirect_uri=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021&amp;link=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3FCMP%3Dshare_btn_me' target=_blank rel=noopener>
 <span class="twite__icon twite__icon--messengermobile" data-platform="messengermobile"></span>
 <p class="twite__channel-text" aria-hidden="true">Messenger</p>
 <span class="off-screen">Share this with Messenger</span>
 </a>
 </li>
 <li class="twite__channel twite__channel--twitter twite__channel-click--twitter">
 <a class="twite__channel-link"onclick="window.open('https://twitter.com/intent/tweet?text=BBC%20News%20-%20An%20hour%20to%20catch%20the%20coding%20bug&amp;url=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021' '_blank' 'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=550 height=250').opener = null" href='#' class=shortenUrl data-social-url=https://twitter.com/intent/tweet?text=BBC+News+-+An+hour+to+catch+the+coding+bug&amp;amp;url= data-target-url=https://www.bbc.com/news/technology-26415021>
 <span class="twite__icon twite__icon--twitter" data-platform="twitter"></span>
 <p class="twite__channel-text" aria-hidden="true">Twitter</p>
 <span class="off-screen">Share this with Twitter</span>
 </a>
 </li>
 <li class="twite__channel twite__channel--pinterest twite__channel-click--pinterest">
 <a class="twite__channel-link"onclick="window.open('https://uk.pinterest.com/pin/create/bookmarklet/?url=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021&amp;description=Is%20it%20possible%20to%20get%20children%20interested%20in%20computer%20programming%20in%20just%2060%20minutes%3F%20The%20Hour%20of%20Code%20has%20been%20designed%20to%20do%20just%20that.&amp;title=An%20hour%20to%20catch%20the%20coding%20bug&amp;media=https%3A%2F%2Fnews.bbcimg.co.uk%2Fmedia%2Fimages%2F73325000%2Fjpg%2F_73325451_hourofcode.jpg' '_blank' 'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=750 height=675').opener = null" href='#' >
 <span class="twite__icon twite__icon--pinterest" data-platform="pinterest"></span>
 <p class="twite__channel-text" aria-hidden="true">Pinterest</p>
 <span class="off-screen">Share this with Pinterest</span>
 </a>
 </li>
 <li class="twite__channel twite__channel--whatsapp twite__channel-click--whatsapp">
 <a class="twite__channel-link"onclick="window.open('whatsapp://send?text=BBC%20News%20%7C%20An%20hour%20to%20catch%20the%20coding%20bug%20-%20https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3Focid%3Dwsnews.chat-apps.in-app-msg.whatsapp.trial.link1_.auin' '_blank' 'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=600 height=600').opener = null" href='#' >
 <span class="twite__icon twite__icon--whatsapp" data-platform="whatsapp"></span>
 <p class="twite__channel-text" aria-hidden="true">WhatsApp</p>
 <span class="off-screen">Share this with WhatsApp</span>
 </a>
 </li>
 <li class="twite__channel twite__channel--linkedin twite__channel-click--linkedin">
 <a class="twite__channel-link"onclick="window.open('https://www.linkedin.com/shareArticle?mini=true&amp;url=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021&amp;title=An%20hour%20to%20catch%20the%20coding%20bug&amp;summary=Is%20it%20possible%20to%20get%20children%20interested%20in%20computer%20programming%20in%20just%2060%20minutes%3F%20The%20Hour%20of%20Code%20has%20been%20designed%20to%20do%20just%20that.&amp;source=BBC' '_blank' 'toolbar=no scrollbars=yes resizable=no fullscreen=no top=50 left=50 width=550 height=500').opener = null" href='#' >
 <span class="twite__icon twite__icon--linkedin" data-platform="linkedin"></span>
 <p class="twite__channel-text" aria-hidden="true">LinkedIn</p>
 <span class="off-screen">Share this with LinkedIn</span>
 </a>
 </li>
 </ul>
 <p class="twite__copy-text">Copy this link</p>
 <div class="twite__copy-input">
 <a class="twite__share-link" href="https://www.bbc.com/news/technology-26415021" tabindex="-1" contenteditable="true">https://www.bbc.com/news/technology-26415021</a>
 </div>
 <a class="twite__read-more" href="https://www.bbc.co.uk/faqs/questions/bbc_online/sharing">Read more about sharing.</a>
 <p class="twite__new-window" aria-hidden="true">These are external links and will open in a new window</p>
 <button class="twite__close-button">
 <span class="off-screen">Close share panel</span>
 <div class="twite__close-button-graphic" aria-hidden="true"></div>
 </button>
 </div>
 </li>
</ul>
 
 </div>
 </div>
 </div>
 <div id="topic-tags"><div id="u7025129578541964"><noscript></noscript></div></div> </div>
 </div>
 <div class="story-body__inner" property="articleBody">
 <figure class="media-landscape has-caption full-width lead">
 <span class="image-and-copyright-container">
 
 <img class="js-image-replace" alt="Child with computer" src="https://ichef.bbci.co.uk/news/320/media/images/73325000/jpg/_73325163_olly009.jpg" width="512" height="320">
 
 
 
 </span>
 
 <figcaption class="media-caption">
 <span class="off-screen">Image caption</span>
 <span class="media-caption__text">
 We did our Hour of Code on a lazy Sunday morning
 </span>
 </figcaption>
 
 </figure><p class="story-body__introduction">Okay 60 minutes and counting. Here we go.</p><p>I've got an hour to convince my kids that programming is for them.</p><p>Well sort of.</p><p>I'm putting my twin 10-year-old boys Toby and Callum through the Hour of Code - a campaign that seeks to ignite an interest in programming - the part we're doing using specially created web-based exercises. </p><p>The campaign begun in the US has landed in the UK where it also coincides with government calls for as many children as possible to get coding.</p><div id="bbccom_mpu_1_2_3" class="bbccom_slot mpu-ad" aria-hidden="true">
 <div class="bbccom_advert">
 <script type="text/javascript">
 /**/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('mpu' [1 2 3]);
 }
 })();
 /**/
 </script>
 </div>
</div><p>Programming is being pushed because in an ever more technological world it can only be a good thing to give people a peep into what goes on behind the touch screen cash point and website. </p><p>The Hour of Code is supposed to be the start of that journey and I like many other parents feel it's one my children should be embarking on. I do feel like a clock somewhere is ticking and unless they get started with this essential skill they'll be left behind. </p><p>"In the future kids are going to be doing programming " said Callum when I asked him why it was worth learning how to code. "We need to learn so we can do stuff with the computer otherwise it will be a blank page and never work."</p><h2 class="story-body__crosshead">Zombie dance</h2><figure class="media-landscape has-caption full-width">
 <span class="image-and-copyright-container">
 
 
 <div class="js-delayed-image-load" data-alt="Screenshot from the hour of code" data-src="https://ichef.bbci.co.uk/news/320/media/images/73325000/jpg/_73325167_hourofcode.jpg" data-width="512" data-height="288"></div>
 
 
 <span class="off-screen">Image copyright</span>
 <span class="story-image-copyright">Code.org</span>
 
 </span>
 
 <figcaption class="media-caption">
 <span class="off-screen">Image caption</span>
 <span class="media-caption__text">
 The coding exercises involve familiar characters such as the Angry Birds
 </span>
 </figcaption>
 
 </figure><p>It's the getting started for both parents and their offspring that the Hour is intended to help with. I'm probably like most parents in that I have no significant qualification in computer science. All I can offer my boys is a lifetime of tinkering backed up over the past 18 months with online courses in Python HTML CSS Javascript and the like. </p><p>There's good precedents for the value of something like the Hour of Code. I've quizzed every chief technology officer (CTO) developer or IT worker I've met in the past couple of weeks about what got them started and every one knew exactly the moment they got it. Their eyes lit up as they talked about typing in code listings from magazines working through every Dos command or designing their own blocky 8-bit game characters.</p><p>And finally at the back of my mind are all those statistics about the shortages of skilled IT staff and my hope that if this works then their future career options will be much wider than they would be without this skill.</p><p>So no pressure then.</p><p>Yesterday morning we gave it a go. I was keen for it to be fun rather than feel like school as there's nothing more likely to turn them off than for it to be sold as good for them. I think we struck the right note of informality - Cal did it in his onesie. </p><p>It went OK no better than that. Pretty good. We worked through all the exercises getting angry birds to mash pigs and zombies to chomp sunflowers. The coding is done by dragging blocks representing different commands into a work area and building the blocks into a tower of coherent instructions.</p><p>The block-building system is based on the Scratch programming language build by MIT's Mitch Resnick. </p><p>The exercises start easy - just getting an angry bird to hop on to a pig. By the end we were using "If… else" statements and loops to help a zombie navigate a tricky maze to reach the sunflower.</p><p>This went down well with Callum. "Cool! It's scanning for a path " he said as the zombie worked its way towards the hapless flower.</p><p>Mistakes were made but we learned from them we debated over which way to make the birds and zombies turn and the time went really fast. </p><p>Toby was surprised to find that this counted as programming.</p><p>"I thought coding was just a lot of people tapping in letter and numbers until they got it right " he said. </p><h2 class="story-body__crosshead">Next steps</h2><p>And yet I felt it was a bit too easy. I wanted to make the coding connection to real life more tangible. So as we had about 15 minutes of our Hour of Code left we went further.</p><p>This time we used the MIT App Inventor to build a basic program that would run on the tablets they own. </p><p>The app inventor uses the same "drag the block" method to build a program and following the instructions we had soon created an app that turned anything typed in text into speech. </p><figure class="media-landscape has-caption body-narrow-width">
 <span class="image-and-copyright-container">
 
 
 <div class="js-delayed-image-load" data-alt="Screenshot from MIT App Inventor" data-src="https://ichef.bbci.co.uk/news/320/media/images/73325000/jpg/_73325169_appinventor.jpg" data-width="448" data-height="287"></div>
 
 
 <span class="off-screen">Image copyright</span>
 <span class="story-image-copyright">MIT</span>
 
 </span>
 
 <figcaption class="media-caption">
 <span class="off-screen">Image caption</span>
 <span class="media-caption__text">
 The App Inventor uses the same block dragging system as the Hour of Code exercises
 </span>
 </figcaption>
 
 </figure><p>We got it working on Cal's tablet and soon they were getting that gadget to call out lots of phrases. Almost inevitably as they are 10 years old a lot of these phrases involved the words "willy" and "bum". </p><p>But they had a lot of fun with it and it brought home to them how straight-forward coding can be. In just over an hour they went from being pretty much novices to creating an Android app - a basic one that trades on the expertise of the people that built the coding tools but it was an accomplishment nonetheless.</p><p>Did they catch the coding bug as a result? </p><p>Maybe later in the day they were programming each other after one of their regular wrestling matches left Toby lying exhausted on the floor. Suddenly Cal called out commands such as "roll left" and Toby started obeying even to the point of crashing into the sofa when too many roll commands were given. </p><p>Then Toby had his turn and did the same they even worked out that they had to compensate for the changes in left and right as they rolled. </p><p>So I think that hour started something. Both with them and with me. Building that Android app made me realise that it is straight-forward. That my lack of formal qualifications do not matter as much as I thought. And maybe that's the point of the hour. Making people realise that it is not scary and difficult. You just have to find an hour and give it a try. You can even do it in your onesie.</p>
 </div>
</div>
 <div id="topic-tags"><div id="u6029117538128048"><noscript></noscript></div></div>
 <div class="share share--lightweight show ghost-column">
 <div id="share-tools"></div>
 <h2 class="share__title share__title--lightweight">
 Share this story <a href="http://www.bbc.co.uk/help/web/sharing.shtml">About&nbsp;sharing</a>
 </h2>
 <ul class="share__tools share__tools--lightweight">
 <li class="share__tool share__tool--email">
 <a href="mailto:?subject=Shared%20from%20BBC%20News&body=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021" >
 <span>Email</span>
 </a>
 </li>
 <li class="share__tool share__tool--facebook">
 <a href="http://www.facebook.com/dialog/feed?app_id=58567469885&redirect_uri=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021&link=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3FSThisFB&display=popup" >
 <span>Facebook</span>
 </a>
 </li>
 <li class="share__tool share__tool--messengerdesktop">
 <a href="http://www.facebook.com/dialog/send?app_id=58567469885&redirect_uri=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021&link=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3FSThisFB&display=popup" >
 <span>Messenger</span>
 </a>
 </li>
 <li class="share__tool share__tool--messengermobile">
 <a href="fb-messenger://share?app_id=58567469885&redirect_uri=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021&link=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3FCMP%3Dshare_btn_me" target=_blank rel=noopener>
 <span>Messenger</span>
 </a>
 </li>
 <li class="share__tool share__tool--twitter">
 <a href="https://twitter.com/intent/tweet?text=BBC%20News%20-%20An%20hour%20to%20catch%20the%20coding%20bug&url=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021" class=shortenUrl data-social-url=https://twitter.com/intent/tweet?text=BBC+News+-+An+hour+to+catch+the+coding+bug&amp;url= data-target-url=https://www.bbc.com/news/technology-26415021>
 <span>Twitter</span>
 </a>
 </li>
 <li class="share__tool share__tool--pinterest">
 <a href="https://uk.pinterest.com/pin/create/bookmarklet/?url=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021&description=Is%20it%20possible%20to%20get%20children%20interested%20in%20computer%20programming%20in%20just%2060%20minutes%3F%20The%20Hour%20of%20Code%20has%20been%20designed%20to%20do%20just%20that.&title=An%20hour%20to%20catch%20the%20coding%20bug&media=https%3A%2F%2Fwww.bbc.co.uk%2Fnews%2Fspecial%2F2015%2Fnewsspec_10857%2Fbbc_news_logo.png%3Fcb%3D1" >
 <span>Pinterest</span>
 </a>
 </li>
 <li class="share__tool share__tool--whatsapp">
 <a href="whatsapp://send?text=BBC%20News%20%7C%20An%20hour%20to%20catch%20the%20coding%20bug%20-%20https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021%3Focid%3Dwsnews.chat-apps.in-app-msg.whatsapp.trial.link1_.auin" >
 <span>WhatsApp</span>
 </a>
 </li>
 <li class="share__tool share__tool--linkedin">
 <a href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fwww.bbc.com%2Fnews%2Ftechnology-26415021&title=An%20hour%20to%20catch%20the%20coding%20bug&summary=Is%20it%20possible%20to%20get%20children%20interested%20in%20computer%20programming%20in%20just%2060%20minutes%3F%20The%20Hour%20of%20Code%20has%20been%20designed%20to%20do%20just%20that.&source=BBC" >
 <span>LinkedIn</span>
 </a>
 </li>
 </ul>
</div>
 <div class="story-more">
 <div class="group story-alsos more-on-this-story"> <div class="group__header"> <h2 class="group__title">More on this story</h2> </div> <div class="group__body"> <ul class="units-list "> <li class="unit unit--regular" data-entityid="more-on-this-story#1" > <a href="/news/av/education-25648769/computer-coding-taught-in-estonian-primary-schools" class="unit__link-wrapper"> <div class="unit__body"> <div class="unit__header"> <div class="unit__title"> 
 <span class="icon-new icon-new--video-square-red"><span class="off-screen"> Video</span></span>
 
 
 <span class="cta"> Computer coding taught in Estonian primary schools </span> </div> <div class="unit__meta"> <div class="date date--v1" data-seconds="1389169705" data-datetime="8 January 2014">8 January 2014</div> </div> </div> </div> </a> </li> <li class="unit unit--regular" data-entityid="more-on-this-story#2" > <a href="/news/technology-26150717" class="unit__link-wrapper"> <div class="unit__body"> <div class="unit__header"> <div class="unit__title"> <span class="cta"> Year of Code - PR fiasco or vital mission? </span> </div> <div class="unit__meta"> <div class="date date--v1" data-seconds="1392196197" data-datetime="12 February 2014">12 February 2014</div> </div> </div> </div> </a> </li> <li class="unit unit--regular" data-entityid="more-on-this-story#3" > <a href="/news/technology-25857276" class="unit__link-wrapper"> <div class="unit__body"> <div class="unit__header"> <div class="unit__title"> <span class="cta"> Are teachers ready for the coding revolution? </span> </div> <div class="unit__meta"> <div class="date date--v1" data-seconds="1390468159" data-datetime="23 January 2014">23 January 2014</div> </div> </div> </div> </a> </li> </ul> </div> </div> </div>
 
<div class="story-more">
 <div class="group related-links--external more-on-this-story"> <div class="group__header"> <h2 class="group__title">Related Internet links</h2> </div> <div class="group__body"> <ul class="units-list "> <li class="unit unit--headline" data-entityid="more-on-this-story#1" > <div class="unit__body"> <div class="unit__header"> <a class="unit__link-wrapper" href="http://uk.code.org/"> <div class="unit__title"> <span class="cta">UK Hour of Code</span> </div> </a> </div> </div> </li> <li class="unit unit--headline" data-entityid="more-on-this-story#2" > <div class="unit__body"> <div class="unit__header"> <a class="unit__link-wrapper" href="http://appinventor.mit.edu/explore/"> <div class="unit__title"> <span class="cta">MIT App Inventor</span> </div> </a> </div> </div> </li> <li class="unit unit--headline" data-entityid="more-on-this-story#3" > <div class="unit__body"> <div class="unit__header"> <a class="unit__link-wrapper" href="http://scratch.mit.edu/"> <div class="unit__title"> <span class="cta">MIT Scratch</span> </div> </a> </div> </div> </li> </ul> </div> </div> 
 <p class="unit__meta">The BBC is not responsible for the content of external Internet sites</p>
</div>
 <div id=comp-pattern-library-7
 class="hidden"
 data-post-load-url="/news/pattern-library-components?options%5BassetId%5D=26415021&amp;options%5Bcontainer_class%5D=container-more-from-this-index&amp;options%5Bdata%5D%5Bsource%5D=candy_parent_index&amp;options%5Bdata%5D%5Bsource_params%5D%5Bsection_title%5D=1&amp;options%5Bcomponents%5D%5B0%5D%5Bname%5D=sparrow&amp;options%5Bcomponents%5D%5B0%5D%5Blimit%5D=3&amp;options%5Bloading_strategy%5D=post_load&amp;options%5Bstats%5D%5Blink_location%5D=more-section-index&amp;options%5Bstats%5D%5Bstrapline_link_location%5D=more-from-this-index-headline&amp;options%5Bstats%5D%5Bsection_label%5D=more-from-this-index-section-label&amp;options%5Basset_id%5D=technology-26415021&amp;presenter=pattern-library-presenter">
 </div> <div id=comp-from-other-news-sites
 class="hidden"
 data-comp-meta="{&quot;id&quot;:&quot;comp-from-other-news-sites&quot; &quot;type&quot;:&quot;from-other-news-sites&quot; &quot;handler&quot;:&quot;default&quot; &quot;deviceGroups&quot;:null &quot;opts&quot;:{&quot;assetId&quot;:&quot;26415021&quot; &quot;conditions&quot;:[&quot;is_local_page&quot;] &quot;loading_strategy&quot;:&quot;post_load&quot; &quot;asset_id&quot;:&quot;technology-26415021&quot; &quot;position_info&quot;:{&quot;instanceNo&quot;:1 &quot;positionInRegion&quot;:7 &quot;lastInRegion&quot;:true &quot;lastOnPage&quot;:false &quot;column&quot;:&quot;primary_column&quot;}} &quot;template&quot;:&quot;\/component\/from-other-news-sites&quot;}">
 </div> 
<div id="bbccom_outbrain_ar_5_1_2_3_4" class="bbccom_slot outbrain-ad" aria-hidden="true">
 <div class="bbccom_advert">
 <script type="text/javascript">
 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('outbrain_ar_5' [1 2 3 4]);
 }
 })();
 /*]]>*/
 </script>
 </div>
</div>
<div id="bbccom_outbrain_ar_7_1_2_3_4" class="bbccom_slot outbrain-ad" aria-hidden="true">
 <div class="bbccom_advert">
 <script type="text/javascript">
 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('outbrain_ar_7' [1 2 3 4]);
 }
 })();
 /*]]>*/
 </script>
 </div>
</div>
<div id="bbccom_outbrain_ar_8_1_2_3_4" class="bbccom_slot outbrain-ad" aria-hidden="true">
 <div class="bbccom_advert">
 <script type="text/javascript">
 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('outbrain_ar_8' [1 2 3 4]);
 }
 })();
 /*]]>*/
 </script>
 </div>
</div>
<div id="bbccom_outbrain_ar_9_3_4" class="bbccom_slot outbrain-ad" aria-hidden="true">
 <div class="bbccom_advert">
 <script type="text/javascript">
 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('outbrain_ar_9' [3 4]);
 }
 })();
 /*]]>*/
 </script>
 </div>
</div>
 </div>
 <div class="column--secondary" role="complementary">
 <div id="comp-top-stories-promo" class="top-stories-promo">
 <h2 class="top-stories-promo__title">Top Stories</h2>
 <a href="/news/world-middle-east-50698017" class="top-stories-promo-story" data-asset-id="/news/world-middle-east-50698017"data-entityid="top-stories#1">
 <strong class="top-stories-promo-story__title">US and Iranian men released in prisoner swap</strong>
 <p class="top-stories-promo-story__summary top-stories-promo-story__summary--none">Xiyue Wang was jailed in Iran in 2016 while Massoud Soleimani was arrested at a US airport last year.</p>
 <div class="date date--v2" data-seconds="1575742455" data-datetime="7 December 2019">7 December 2019</div>
 </a>
 <a href="/news/science-environment-50690995" class="top-stories-promo-story" data-asset-id="/news/science-environment-50690995"data-entityid="top-stories#3">
 <strong class="top-stories-promo-story__title">Oceans running out of oxygen say scientists</strong>
 <div class="date date--v2" data-seconds="1575713875" data-datetime="7 December 2019">7 December 2019</div>
 </a>
 <a href="/news/world-asia-india-50697139" class="top-stories-promo-story" data-asset-id="/news/world-asia-india-50697139"data-entityid="top-stories#5">
 <strong class="top-stories-promo-story__title">Woman set on fire on way to rape hearing dies</strong>
 <div class="date date--v2" data-seconds="1575697804" data-datetime="7 December 2019">7 December 2019</div>
 </a>
 </div> 
<div id="bbccom_mpu_4" class="bbccom_slot mpu-ad" aria-hidden="true">
 <div class="bbccom_advert">
 <script type="text/javascript">
 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('mpu' [4]);
 }
 })();
 /*]]>*/
 </script>
 </div>
</div>
 
<div class="features-and-analysis" id="comp-features-and-analysis" >
 <h2 class="features-and-analysis__title">
 
 Features
 </h2>
 <div class="features-and-analysis__stories promo-unit-spacer">
 
 <div class="features-and-analysis__story" data-entityid="features-and-analysis#1">
 <a href="https://www.bbc.co.uk/news/extra/NNdZwVPPgP/300-seconds-on-london-bridge" class="bold-image-promo">
 <div class="bold-image-promo__image">
 <div class="responsive-image responsive-image--16by9">
 
 <div class="js-delayed-image-load" data-src="https://ichef.bbci.co.uk/news/304/cpsprodpb/A003/production/_110036904_lodon_briddge_attack_superpromo_976.jpg" data-width="976" data-height="549" data-alt="Illustration of London Bridge attack"></div>
 <!--[if lt IE 9]>
 <img src="https://ichef.bbci.co.uk/news/304/cpsprodpb/A003/production/_110036904_lodon_briddge_attack_superpromo_976.jpg" class="js-image-replace" alt="Illustration of London Bridge attack" width="976" height="549" />
 <![endif]-->
 
 </div>
 </div>
 <h3 class="bold-image-promo__title">300 seconds at London Bridge</h3>
 
 </a>
 </div>
 
 
 <div class="features-and-analysis__story" data-entityid="features-and-analysis#2">
 <a href="/news/world-europe-50672007" class="bold-image-promo">
 <div class="bold-image-promo__image">
 <div class="responsive-image responsive-image--16by9">
 
 <div class="js-delayed-image-load" data-src="https://ichef.bbci.co.uk/news/304/cpsprodpb/029F/production/_110017600_gettyimages-1186404161.jpg" data-width="976" data-height="549" data-alt="UK Prime Minister Boris Johnson shakes hands with US President Donald Trump during the annual Nato heads of government summit in Watford England 4 December 2019"></div>
 <!--[if lt IE 9]>
 <img src="https://ichef.bbci.co.uk/news/304/cpsprodpb/029F/production/_110017600_gettyimages-1186404161.jpg" class="js-image-replace" alt="UK Prime Minister Boris Johnson shakes hands with US President Donald Trump during the annual Nato heads of government summit in Watford England 4 December 2019" width="976" height="549" />
 <![endif]-->
 
 </div>
 </div>
 <h3 class="bold-image-promo__title">Divisive UK election campaign reaches climax</h3>
 
 </a>
 </div>
 
 
 <div class="features-and-analysis__story" data-entityid="features-and-analysis#3">
 <a href="/news/av/world-us-canada-50665856/how-us-law-professors-teach-impeachment" class="bold-image-promo">
 <div class="bold-image-promo__image">
 <div class="responsive-image responsive-image--16by9">
 <div class="responsive-image__inner-for-label"><!-- closed in responsive-image-end -->
 <div class="js-delayed-image-load" data-src="https://ichef.bbci.co.uk/news/304/cpsprodpb/AD74/production/_110040444_p07x5qgq.jpg" data-width="976" data-height="549" data-alt="Professor"></div>
 <!--[if lt IE 9]>
 <img src="https://ichef.bbci.co.uk/news/304/cpsprodpb/AD74/production/_110040444_p07x5qgq.jpg" class="js-image-replace" alt="Professor" width="976" height="549" />
 <![endif]-->
 <div class="responsive-image__label" aria-hidden="true">
 <span class="icon video"><span class="off-screen"> Video</span></span>
 
 
 
 </div>
 <!-- opened in responsive-image-start --></div>
 </div>
 </div>
 <h3 class="bold-image-promo__title">How US law professors teach impeachment</h3>
 
 </a>
 </div>
 
<div id="bbccom_infeed_news_story_1_2_3_4_5" class="bbccom_slot infeednewsstory-ad" aria-hidden="true">
 <div class="bbccom_advert">
 <script type="text/javascript">
 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('infeed_news_story' [1 2 3 4 5]);
 }
 })();
 /*]]>*/
 </script>
 </div>
</div>
 
 <div class="features-and-analysis__story" data-entityid="features-and-analysis#4">
 <a href="/news/health-50346131" class="bold-image-promo">
 <div class="bold-image-promo__image">
 <div class="responsive-image responsive-image--16by9">
 
 <div class="js-delayed-image-load" data-src="https://ichef.bbci.co.uk/news/304/cpsprodpb/B2C6/production/_109666754_exercise1.jpg" data-width="976" data-height="549" data-alt="Valerie Stephan"></div>
 <!--[if lt IE 9]>
 <img src="https://ichef.bbci.co.uk/news/304/cpsprodpb/B2C6/production/_109666754_exercise1.jpg" class="js-image-replace" alt="Valerie Stephan" width="976" height="549" />
 <![endif]-->
 
 </div>
 </div>
 <h3 class="bold-image-promo__title">'I was addicted to exercise'</h3>
 
 </a>
 </div>
 
 
 <div class="features-and-analysis__story" data-entityid="features-and-analysis#5">
 <a href="/news/science-environment-50602971" class="bold-image-promo">
 <div class="bold-image-promo__image">
 <div class="responsive-image responsive-image--16by9">
 
 <div class="js-delayed-image-load" data-src="https://ichef.bbci.co.uk/news/304/cpsprodpb/A863/production/_109970134_floods_fires_getty.jpg" data-width="976" data-height="549" data-alt="Floods in east Africa and fires in Australia"></div>
 <!--[if lt IE 9]>
 <img src="https://ichef.bbci.co.uk/news/304/cpsprodpb/A863/production/_109970134_floods_fires_getty.jpg" class="js-image-replace" alt="Floods in east Africa and fires in Australia" width="976" height="549" />
 <![endif]-->
 
 </div>
 </div>
 <h3 class="bold-image-promo__title">The climate phenomenon linking floods and bushfires</h3>
 
 </a>
 </div>
 
 
 <div class="features-and-analysis__story" data-entityid="features-and-analysis#6">
 <a href="/news/world-50688435" class="bold-image-promo">
 <div class="bold-image-promo__image">
 <div class="responsive-image responsive-image--16by9">
 
 <div class="js-delayed-image-load" data-src="https://ichef.bbci.co.uk/news/304/cpsprodpb/6D9F/production/_110036082_india_banner.jpg" data-width="1024" data-height="576" data-alt="Protest banner"></div>
 <!--[if lt IE 9]>
 <img src="https://ichef.bbci.co.uk/news/304/cpsprodpb/6D9F/production/_110036082_india_banner.jpg" class="js-image-replace" alt="Protest banner" width="1024" height="576" />
 <![endif]-->
 
 </div>
 </div>
 <h3 class="bold-image-promo__title">The struggle for justice for India's rape victims</h3>
 
 </a>
 </div>
 
 
 <div class="features-and-analysis__story" data-entityid="features-and-analysis#7">
 <a href="/news/av/world-africa-50679143/i-bring-explosions-of-colour-to-public-spaces" class="bold-image-promo">
 <div class="bold-image-promo__image">
 <div class="responsive-image responsive-image--16by9">
 <div class="responsive-image__inner-for-label"><!-- closed in responsive-image-end -->
 <div class="js-delayed-image-load" data-src="https://ichef.bbci.co.uk/news/304/cpsprodpb/421A/production/_110022961_p07x1l00.jpg" data-width="1024" data-height="576" data-alt="Artist Yinka Ilori"></div>
 <!--[if lt IE 9]>
 <img src="https://ichef.bbci.co.uk/news/304/cpsprodpb/421A/production/_110022961_p07x1l00.jpg" class="js-image-replace" alt="Artist Yinka Ilori" width="1024" height="576" />
 <![endif]-->
 <div class="responsive-image__label" aria-hidden="true">
 <span class="icon video"><span class="off-screen"> Video</span></span>
 
 
 
 </div>
 <!-- opened in responsive-image-start --></div>
 </div>
 </div>
 <h3 class="bold-image-promo__title">'I bring explosions of colour to public spaces'</h3>
 
 </a>
 </div>
 
 
 <div class="features-and-analysis__story" data-entityid="features-and-analysis#8">
 <a href="/news/world-africa-50689205" class="bold-image-promo">
 <div class="bold-image-promo__image">
 <div class="responsive-image responsive-image--16by9">
 
 <div class="js-delayed-image-load" data-src="https://ichef.bbci.co.uk/news/304/cpsprodpb/35A5/production/_110033731_gettyimages-1157839697.jpg" data-width="976" data-height="549" data-alt="Sho Madjozi"></div>
 <!--[if lt IE 9]>
 <img src="https://ichef.bbci.co.uk/news/304/cpsprodpb/35A5/production/_110033731_gettyimages-1157839697.jpg" class="js-image-replace" alt="Sho Madjozi" width="976" height="549" />
 <![endif]-->
 
 </div>
 </div>
 <h3 class="bold-image-promo__title">Five African music stars to look out for</h3>
 
 </a>
 </div>
 
 
 <div class="features-and-analysis__story" data-entityid="features-and-analysis#9">
 <a href="https://www.bbc.com/reel/video/p07wsv3j/a-dangerous-dive-into-a-medieval-mystery" class="bold-image-promo">
 <div class="bold-image-promo__image">
 <div class="responsive-image responsive-image--16by9">
 
 <div class="js-delayed-image-load" data-src="https://ichef.bbci.co.uk/news/304/cpsprodpb/E879/production/_110031595_screenshot2019-12-06at10.38.23.png" data-width="812" data-height="457" data-alt="The Fosse Dionne spring in Tonnerre France"></div>
 <!--[if lt IE 9]>
 <img src="https://ichef.bbci.co.uk/news/304/cpsprodpb/E879/production/_110031595_screenshot2019-12-06at10.38.23.png" class="js-image-replace" alt="The Fosse Dionne spring in Tonnerre France" width="812" height="457" />
 <![endif]-->
 
 </div>
 </div>
 <h3 class="bold-image-promo__title">A dangerous dive into a medieval mystery</h3>
 
 </a>
 </div>
 
 </div>
</div>
 
<div id="bbccom_native_1_2_3_4" class="bbccom_slot native-ad" >
 <div class="bbccom_advert">
 <script type="text/javascript">
 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('native' [1 2 3 4]);
 }
 })();
 /*]]>*/
 </script>
 </div>
</div>
 
 <div id="comp-elsewhere-on-the-bbc" class="distinct-component-group container-heron">
 
 <h2 class="group-title " data-entityid="#elsewhere_on_the_bbc">
 
 Elsewhere on the BBC
</h2>
<div class="heron">
 <div class="heron__item faux-block-link" data-entityid="hyper-promotional-content#1">
 <div class="heron__item-image">
 <div class="responsive-image responsive-image--16by9">
 
 <div class="js-delayed-image-load" data-src="https://ichef.bbci.co.uk/news/200/cpsprodpb/1343E/production/_102501987_lyrics-quiz.jpg" data-width="624" data-height="351" data-alt="Michael Stipe Jimmi Hendrix and Taylor Swift - lyrics quiz image"></div>
 <!--[if lt IE 9]>
 <img src="https://ichef.bbci.co.uk/news/200/cpsprodpb/1343E/production/_102501987_lyrics-quiz.jpg" class="js-image-replace" alt="Michael Stipe Jimmi Hendrix and Taylor Swift - lyrics quiz image" width="624" height="351" />
 <![endif]-->
 
 </div>
 </div>
 <div class="heron__item-body">
 <a href="https://www.bbc.co.uk/music/articles/d37a03cb-41e5-43c8-b88d-8e1f59fd9998?intc_type=promo&amp;intc_location=news&amp;intc_campaign=misheardlyrics_quiz&amp;intc_linkname=bbcmusic_rm_low_c3" class="title-link">
 
 <h3 class="title-link__title">
 
 <span class="title-link__title-text">Lyrics quiz</span>
 </h3>
 </a> <p class="heron__item-summary">Have you been getting these songs wrong?</p>
 </div>
 <a href="https://www.bbc.co.uk/music/articles/d37a03cb-41e5-43c8-b88d-8e1f59fd9998?intc_type=promo&amp;intc_location=news&amp;intc_campaign=misheardlyrics_quiz&amp;intc_linkname=bbcmusic_rm_low_c3" class="faux-block-link__overlay-link" tabindex="-1" aria-hidden="true">Full article Lyrics quiz</a>
 </div>
 <div class="heron__item faux-block-link" data-entityid="hyper-promotional-content#2">
 <div class="heron__item-image">
 <div class="responsive-image responsive-image--16by9">
 
 <div class="js-delayed-image-load" data-src="https://ichef.bbci.co.uk/news/200/cpsprodpb/1386C/production/_102408997_extreme-heat.jpg" data-width="624" data-height="351" data-alt="extreme heat image"></div>
 <!--[if lt IE 9]>
 <img src="https://ichef.bbci.co.uk/news/200/cpsprodpb/1386C/production/_102408997_extreme-heat.jpg" class="js-image-replace" alt="extreme heat image" width="624" height="351" />
 <![endif]-->
 
 </div>
 </div>
 <div class="heron__item-body">
 <a href="https://www.bbc.co.uk/bbcthree/article/063dba1d-2ab2-40e3-9837-3d70481ef82c?intc_type=promo&amp;intc_location=news&amp;intc_campaign=whathappenstoyourbodyinheat_article&amp;intc_linkname=bbcthree_yc_low_c3" class="title-link">
 
 <h3 class="title-link__title">
 
 <span class="title-link__title-text">Feeling hot</span>
 </h3>
 </a> <p class="heron__item-summary">What happens to your body in extreme heat?</p>
 </div>
 <a href="https://www.bbc.co.uk/bbcthree/article/063dba1d-2ab2-40e3-9837-3d70481ef82c?intc_type=promo&amp;intc_location=news&amp;intc_campaign=whathappenstoyourbodyinheat_article&amp;intc_linkname=bbcthree_yc_low_c3" class="faux-block-link__overlay-link" tabindex="-1" aria-hidden="true">Full article Feeling hot</a>
 </div>
</div>
 
 </div>
 <div id=comp-most-popular
 class="hidden"
 data-comp-meta="{&quot;id&quot;:&quot;comp-most-popular&quot; &quot;type&quot;:&quot;most-popular&quot; &quot;handler&quot;:&quot;mostPopular&quot; &quot;deviceGroups&quot;:null &quot;opts&quot;:{&quot;assetId&quot;:&quot;26415021&quot; &quot;loading_strategy&quot;:&quot;post_load&quot; &quot;position_info&quot;:{&quot;instanceNo&quot;:1 &quot;positionInRegion&quot;:4 &quot;lastInRegion&quot;:true &quot;lastOnPage&quot;:false &quot;column&quot;:&quot;secondary_column&quot;}}}">
 </div> 
<div id="bbccom_mpu_bottom_1_2_3_4" class="bbccom_slot mpu-bottom-ad" aria-hidden="true">
 <div class="bbccom_advert">
 <script type="text/javascript">
 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('mpu_bottom' [1 2 3 4]);
 }
 })();
 /*]]>*/
 </script>
 </div>
</div>
<div id="bbccom_outbrain_ar_9_1_2" class="bbccom_slot outbrain-ad" aria-hidden="true">
 <div class="bbccom_advert">
 <script type="text/javascript">
 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('outbrain_ar_9' [1 2]);
 }
 })();
 /*]]>*/
 </script>
 </div>
</div>
<div id="bbccom_adsense_1_2_3_4" class="bbccom_slot adsense-ad" aria-hidden="true">
 <div class="bbccom_advert">
 <script type="text/javascript">
 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('adsense' [1 2 3 4]);
 }
 })();
 /*]]>*/
 </script>
 </div>
</div>
<div id="bbccom_inread_1_2_3_4" class="bbccom_slot inread" aria-hidden="true">
 <div class="bbccom_advert">
 <script type="text/javascript">
 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('inread' [1 2 3 4]);
 }
 })();
 /*]]>*/
 </script>
 </div>
</div>
 </div>
 </div> </div> </div> <div class="page__foot">
 <div class="trust-project">
 <div class="trust-project__inner">
 <a href="https://www.bbc.co.uk/news/help-41670342" class="trust-project__link"><span class="svg-icon--24 svg-icon--info-caption" data-grunticon-embed></span><span class="trust-project__link-text">Why you can trust BBC News</span></a>
 </div>
</div> </div>
 </div> 
 
<div id="core-navigation" class="navigation--footer">
 <h2 class="navigation--footer__heading">BBC News Navigation</h2>
 
 <nav id="navigation--bottom" class="navigation navigation--bottom " role="navigation" aria-label="BBC News">
 <span class="navigation-core-title">Sections</span>
 <ul class="navigation--bottom__toplevel">
 <li class="">
 <a href="/news" class="">
 <span>Home</span>
 </a>
 </li>
 <li class="">
 <a href="/news/video_and_audio/headlines" class="">
 <span>Video</span>
 </a>
 </li>
 <li class="">
 <a href="/news/world" data-panel-id="js-navigation-panel-World" class="navigation-arrow">
 <span>World</span>
 </a>
 <div class="navigation-panel navigation-panel--closed js-navigation-panel-World">
 <div class="navigation-panel__content">
 <ul class="navigation-panel-secondary">
 <li><a href="/news/world"><span>World Home</span></a></li>
 <li>
 <a href="/news/world/africa"><span>Africa</span></a> </li>
 <li>
 <a href="/news/world/asia"><span>Asia</span></a> </li>
 <li>
 <a href="/news/world/australia"><span>Australia</span></a> </li>
 <li>
 <a href="/news/world/europe"><span>Europe</span></a> </li>
 <li>
 <a href="/news/world/latin_america"><span>Latin America</span></a> </li>
 <li>
 <a href="/news/world/middle_east"><span>Middle East</span></a> </li>
 <li>
 <a href="/news/world/us_and_canada"><span>US &amp; Canada</span></a> </li>
 </ul>
 </div>
 </div>
 </li>
 <li class="">
 <a href="/news/uk" data-panel-id="js-navigation-panel-UK" class="navigation-arrow">
 <span>UK</span>
 </a>
 <div class="navigation-panel navigation-panel--closed js-navigation-panel-UK">
 <div class="navigation-panel__content">
 <ul class="navigation-panel-secondary">
 <li><a href="/news/uk"><span>UK Home</span></a></li>
 <li>
 <a href="/news/england"><span>England</span></a> </li>
 <li>
 <a href="/news/northern_ireland"><span>N. Ireland</span></a> </li>
 <li>
 <a href="/news/scotland"><span>Scotland</span></a> </li>
 <li>
 <a href="/news/wales"><span>Wales</span></a> </li>
 <li>
 <a href="/news/election/2019"><span>Election 2019</span></a> </li>
 </ul>
 </div>
 </div>
 </li>
 <li class="">
 <a href="/news/business" data-panel-id="js-navigation-panel-Business" class="navigation-arrow">
 <span>Business</span>
 </a>
 <div class="navigation-panel navigation-panel--closed js-navigation-panel-Business">
 <div class="navigation-panel__content">
 <ul class="navigation-panel-secondary">
 <li><a href="/news/business"><span>Business Home</span></a></li>
 <li>
 <a href="/news/business/market-data"><span>Market Data</span></a> </li>
 <li>
 <a href="/news/business-38507481"><span>Global Trade</span></a> </li>
 <li>
 <a href="/news/business/companies"><span>Companies</span></a> </li>
 <li>
 <a href="/news/business-22434141"><span>Entrepreneurship</span></a> </li>
 <li>
 <a href="/news/business-11428889"><span>Technology of Business</span></a> </li>
 <li>
 <a href="/news/business-45489065"><span>Connected World</span></a> </li>
 <li>
 <a href="/news/business-12686570"><span>Global Education</span></a> </li>
 <li>
 <a href="/news/business/economy"><span>Economy</span></a> </li>
 </ul>
 </div>
 </div>
 </li>
 <li class="selected ">
 <a href="/news/technology" class="navigation-arrow--open">
 <span>Tech</span>
 </a>
 <span class="off-screen">selected</span> </li>
 <li class="">
 <a href="/news/science_and_environment" class="">
 <span>Science</span>
 </a>
 </li>
 <li class="">
 <a href="/news/stories" class="">
 <span>Stories</span>
 </a>
 </li>
 <li class="">
 <a href="/news/entertainment_and_arts" class="">
 <span>Entertainment &amp; Arts</span>
 </a>
 </li>
 <li class="">
 <a href="/news/health" class="">
 <span>Health</span>
 </a>
 </li>
 <li class="">
 <a href="/news/world_radio_and_tv" class="">
 <span>World News TV</span>
 </a>
 </li>
 <li class="">
 <a href="/news/in_pictures" class="">
 <span>In Pictures</span>
 </a>
 </li>
 <li class="">
 <a href="/realitycheck" class="">
 <span>Reality Check</span>
 </a>
 </li>
 <li class="">
 <a href="/news/newsbeat" class="">
 <span>Newsbeat</span>
 </a>
 </li>
 <li class="">
 <a href="/news/special_reports" class="">
 <span>Special Reports</span>
 </a>
 </li>
 <li class="">
 <a href="/news/explainers" class="">
 <span>Explainers</span>
 </a>
 </li>
 <li class="">
 <a href="/news/the_reporters" class="">
 <span>The Reporters</span>
 </a>
 </li>
 <li class="">
 <a href="/news/have_your_say" class="">
 <span>Have Your Say</span>
 </a>
 </li>
 </ul>
 </nav>
</div> 
 <div id="comp-pattern-library-2" class="distinct-component-group ">
 
 <div id="bbc-news-services" class="blue-tit" role="navigation" aria-label="BBC News Services">
 <div class="blue-tit__inner">
 <h2 class="blue-tit__title">BBC News Services</h2>
 <ul class="blue-tit__list">
 <li class="blue-tit__list-item">
 <a href="https://www.bbc.co.uk/news/10628994" class="blue-tit__list-item-link mobile">On your mobile</a>
 </li>
 <li class="blue-tit__list-item">
 <a href="https://www.bbc.co.uk/news/help-17655000" class="blue-tit__list-item-link connected-tv">On your connected tv</a>
 </li>
 <li class="blue-tit__list-item">
 <a href="https://www.bbc.co.uk/news/10628323" class="blue-tit__list-item-link newsletter">Get news alerts</a>
 </li>
 <li class="blue-tit__list-item">
 <a href="https://www.bbc.co.uk/news/20039682" class="blue-tit__list-item-link contact-us">Contact BBC News</a>
 </li>
 </ul>
 </div>
</div>
 
 </div>
 </div><!-- closes #site-container --> </div>
<div id="orb-footer" class="orb-footer" dir="ltr"><div id="navp-orb-footer-promo"></div><aside role="complementary"><div id="orb-aside" class="orb-nav-sec b-r b-g-p"><div class="orb-footer-inner" role="navigation" aria-label="BBC"><h2 class="orb-footer-lead">Explore the BBC</h2><div class="orb-footer-primary-links"><ul><li class="orb-nav-home"><a href="https://www.bbc.co.uk">Home</a></li><li class="orb-nav-news"><a href="https://www.bbc.co.uk/news">News</a></li><li class="orb-nav-sport"><a href="https://www.bbc.co.uk/sport">Sport</a></li><li class="orb-nav-weather"><a href="https://www.bbc.co.uk/weather">Weather</a></li><li class="orb-nav-iplayer"><a href="https://www.bbc.co.uk/iplayer">iPlayer</a></li><li class="orb-nav-sounds"><a href="https://www.bbc.co.uk/sounds">Sounds</a></li><li class="orb-nav-cbbc"><a href="https://www.bbc.co.uk/cbbc">CBBC</a></li><li class="orb-nav-cbeebies"><a href="https://www.bbc.co.uk/cbeebies">CBeebies</a></li><li class="orb-nav-food"><a href="https://www.bbc.co.uk/food">Food</a></li><li class="orb-nav-bitesize"><a href="https://www.bbc.co.uk/bitesize">Bitesize</a></li><li class="orb-nav-arts"><a href="https://www.bbc.co.uk/arts">Arts</a></li><li class="orb-nav-taster"><a href="https://www.bbc.co.uk/taster">Taster</a></li><li class="orb-nav-local"><a href="https://www.bbc.co.uk/news/localnews">Local</a></li><li class="orb-nav-tv"><a href="https://www.bbc.co.uk/tv">TV</a></li><li class="orb-nav-radio"><a href="https://www.bbc.co.uk/radio">Radio</a></li><li class="orb-nav-three"><a href="https://www.bbc.co.uk/bbcthree">Three</a></li></ul></div></div></div></aside><footer role="contentinfo"><div id="orb-contentinfo" class="orb-nav-sec b-r b-g-p"><script>window.orb.worldwideFooterlinks = '<li class="orb-footer-ads"><a href="https://advertising.bbcworldwide.com/">Advertise with us<'+'/a><'+'/li><li class="orb-footer-adchoices"><a href="https://www.bbc.com/usingthebbc/cookies/how-does-the-bbc-use-cookies-for-advertising/">Ad choices<'+'/a><'+'/li>';</script><div class="orb-footer-inner"> <ul><li class="orb-footer-terms"><a href="https://www.bbc.co.uk/usingthebbc/terms/">Terms of Use</a></li><li class="orb-footer-about"><a href="https://www.bbc.co.uk/aboutthebbc">About the BBC</a></li><li class="orb-footer-privacy"><a href="https://www.bbc.co.uk/usingthebbc/privacy/">Privacy Policy</a></li><li class="orb-footer-cookies"><a href="https://www.bbc.co.uk/usingthebbc/cookies/">Cookies</a></li><li class="orb-footer-accessibility"><a href="https://www.bbc.co.uk/accessibility/">Accessibility Help</a></li><li class="orb-footer-parental"><a href="https://www.bbc.co.uk/guidance">Parental Guidance</a></li><li class="orb-footer-contact"><a href="https://www.bbc.co.uk/contact">Contact the BBC</a></li><li class="orb-footer-newsletter"><a href="https://www.bbc.co.uk/bbcnewsletter">Get Personalised Newsletters</a></li></ul><small><em class="orb-hilight">Copyright &copy; 2019 BBC.</em> The BBC is not responsible for the content of external sites. <span class="orb-footer-links"><a href="https://www.bbc.co.uk/help/web/links/" class="orb-hilight">Read about our approach to external linking.</a></span></small></div></div></div></footer></div><script id="orb-js-script" data-assetpath="https://nav.files.bbci.co.uk/orbit/a07e26191aed6a8725358c88df999791/" src="https://nav.files.bbci.co.uk/orbit/a07e26191aed6a8725358c88df999791/js/orb.min.js"></script> <script type="text/javascript">require(['orb/lib/_$'] function($) {
 $.ready(function() {
 initialiseFooter();
 });
 var scrollCheckTimer;
 var didScroll;
 var previousPosition = 0;
 var delta = 5;
 var PROMO_SHOW_BREAKPOINT = 1500;
 var pageLength = 0;
 function initialiseFooter() {
 // Suppress this feature on browsers we no longer test
 var myNav = navigator.userAgent.toLowerCase();
 var oldIE = (myNav.indexOf('msie') !== -1) && parseInt(myNav.split('msie')[1] 10) <= 10;
 if (!oldIE) {
 require(['orb/cookies'] function (bbccookies) {
 var disabledByCookie = (parseInt(bbccookies.get('ckns_nav_promofail')) || 0) >= 3;
 if (!disabledByCookie) {
 require(['orb/fig'] function (orbFig) {
 orbFig.load(function (fig) {
 if (fig.geo.isUK()) {
 setUpLazyLoading();
 }
 });
 });
 }
 });
 }
 }
 function setUpLazyLoading() {
 // offsetHeight is expensive to calculate only do it once.
 pageLength = Math.abs(document.body.offsetHeight);
 if (pageLength < getViewportHeight() + 300 || pageLength - getCurrentPosition() < PROMO_SHOW_BREAKPOINT) {
 loadPromo();
 } else {
 window.onscroll = function () {
 didScroll = true;
 };
 scrollCheckTimer = setInterval(function () {
 if (didScroll) {
 hasScrolled();
 didScroll = false;
 }
 } 250);
 }
 }
 function loadPromo() {
 clearInterval(scrollCheckTimer);
 require(['orb/async/_footerpromo'] function(promo) {
 promo.init('https://navpromo.api.bbci.co.uk' '');
 });
 }
 function getViewportHeight() {
 return window.innerHeight;
 }
 function getCurrentPosition() {
 return Math.abs(window.scrollY || document.body.scrollTop || document.documentElement.scrollTop);
 }
 function hasScrolled() {
 var currentPosition = getCurrentPosition();
 if (Math.abs(previousPosition - currentPosition) <= delta) {
 return;
 }
 if (currentPosition > previousPosition) {
 if ((pageLength - currentPosition) <= PROMO_SHOW_BREAKPOINT) {
 loadPromo();
 }
 }
 previousPosition = currentPosition;
 }
 })</script><script type="text/javascript">/*<![CDATA[*/
 require(['orb/nav'] function(nav) {
 window.bbcuser.isUKCombined().then(function(isUK) {
 if (isUK) {
 nav.loadJs('https://nav.files.bbci.co.uk/orbit/a07e26191aed6a8725358c88df999791/js/edr.min.js');
 }
 });
 });
 /*]]>*/</script><script type="text/javascript">require.config({
 paths: {
 "mybbc/templates": '//mybbc.files.bbci.co.uk/notification-ui/3.9.10/templates' 
 "mybbc/notifications": '//mybbc.files.bbci.co.uk/notification-ui/3.9.10/js'
 }
 });
 require(['mybbc/notifications/NotificationsMain' 'idcta/idcta-1'] function (NotificationsMain idcta) {
 var loadNotifications = function (isUK) {
 if (isUK) {
 window.bbcpage.loadCSS('//mybbc.files.bbci.co.uk/notification-ui/3.9.10/css/main.min.css').then(function() {
 NotificationsMain.run(idcta '//mybbc.files.bbci.co.uk/notification-ui/3.9.10/');
 });
 }
 };
 
 if (window.bbcuser && window.bbcuser.isUKCombined && typeof(window.bbcuser.isUKCombined) === 'function') {
 // Use new API from Orbit if available
 window.bbcuser.isUKCombined().then(function(isUK) {
 loadNotifications(isUK); 
 });
 } else {
 // Fallback to fig (ORB support)
 var orbFig = window.orb.fig;
 loadNotifications(orbFig.geo.isUK());
 }
 });</script><!-- BBCDOTCOM bodyLast --><div class="bbccom_display_none"><script type="text/javascript">/*<![CDATA[*/ if (window.bbcdotcom && window.bbcdotcom.analytics && bbcdotcom.config && !bbcdotcom.config.isSportApp() && !bbcdotcom.config.isReel()) { bbcdotcom.analytics.page(); } /*]]>*/</script><noscript><img src="//ssc.api.bbc.com/?c1=2&c2=19293874&ns_site=bbc&name=" height="1" width="1" alt=""></noscript><script type="text/javascript">/*<![CDATA[*/ if (window.bbcdotcom && bbcdotcom.currencyProviders) { bbcdotcom.currencyProviders.write(); } /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ if (window.bbcdotcom && bbcdotcom.currencyProviders) { bbcdotcom.currencyProviders.postWrite(); } /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ if (window.bbcdotcom && bbcdotcom.data && bbcdotcom.data.stats && bbcdotcom.data.stats === 1 && bbcdotcom.utils && window.location.pathname === '/') { var wwhpEdition = bbcdotcom.utils.getMetaPropertyContent('wwhp-edition'); var _sf_async_config={}; /** CONFIGURATION START **/ _sf_async_config.uid = 50924; _sf_async_config.domain = "bbc.co.uk"; _sf_async_config.title = "Homepage"+(wwhpEdition !== '' ? ' - '+wwhpEdition : ''); _sf_async_config.sections = "Homepage"+(wwhpEdition !== '' ? ' Homepage - '+wwhpEdition : ''); _sf_async_config.region = wwhpEdition; _sf_async_config.path = "/"+(wwhpEdition !== '' ? '?'+wwhpEdition : ''); /** CONFIGURATION END **/ (function(){ function loadChartbeat() { window._sf_endpt=(new Date()).getTime(); var e = document.createElement("script"); e.setAttribute("language" "javascript"); e.setAttribute("type" "text/javascript"); e.setAttribute('src' '//static.chartbeat.com/js/chartbeat.js'); document.body.appendChild(e); } var oldonload = window.onload; window.onload = (typeof window.onload != "function") ? loadChartbeat : function() { oldonload(); loadChartbeat(); }; })(); } /*]]>*/</script><script type="text/javascript">/*<![CDATA[*/ (function() { window.bbcdotcom.bodyLast = true; }()); /*]]>*/</script></div><!-- BBCDOTCOM all code in page --><script type="text/javascript">if (window.SEARCHBOX.suppress === false && window.SEARCHBOX.locale && /^en-?.*?/.test(window.SEARCHBOX.locale)) {
 require.config({
 paths: {
 "search/searchbox": window.SEARCHBOX.searchboxAppStaticPrefix 
 }
 });
 if (bbcuser && bbcuser.isUKCombined) {
 bbcuser.isUKCombined().then(function (isUK) {
 if (isUK) {
 require(['search/searchbox/searchboxDrawer'] function (SearchboxDrawer) {
 SearchboxDrawer.run(window.SEARCHBOX);
 });
 }
 });
 }
 }</script> <script type="text/javascript">window.COOKIES_STATIC_HOST = 'https://nav.files.bbci.co.uk/orbit-webmodules/0.0.2-398.6553dba/cookie-banner/cookie-prompt/';</script><script src="https://nav.files.bbci.co.uk/orbit-webmodules/0.0.2-398.6553dba/cookie-banner/cookie-banners.bundle.js" async=""></script><script type="text/javascript">require(["istats-1" "orb/cookies"] function(o t){if(t.isAllowed("s1"))try{if(!require.s.contexts._.config.paths.idcta)return void i();require(["idcta/idcta-1"] function(t){t&&"function"==typeof t.getIStatsLabels&&o.addLabels(t.getIStatsLabels()) i()} function(t){throw t})}catch(t){console&&"function"==typeof console.log&&console.log("an exception occurred while adding idcta labels to istats invoking istats without them" t) i()}function i(){o.invoke()}});</script><script type="text/javascript">"use strict";window.__reverb.__reverbLoadedPromise.then(function(e){return e.initialise().then(function(){return e.viewEvent()})} function(){console.log("Failed to load reverb. No event sent")});</script><script src="https://nav.files.bbci.co.uk/orbit-webmodules/0.0.2-398.6553dba/detectview/detectview.bundle.js" async=""></script> </div><!-- closes .direction --> <script> window.old_onload = window.onload; window.onload = function() { if(window.old_onload) { window.old_onload(); } window.loaded = true; }; </script> <!-- Chartbeat Web Analytics code - start -->
<script type="text/javascript">
 /** CONFIGURATION START **/
 var _sf_async_config = {};
 _sf_async_config.uid = "50924";
 _sf_async_config.domain = "www.bbc.co.uk";
 _sf_async_config.sections = "News News - technology News - STY News - technology - STY News - unknown";
 <!-- if page is an index add the edition to the path -->
 _sf_async_config.path = "bbc.co.uk/news/technology-26415021";
 (function() {
 var cookiePrefix = 'ckns_sylphid';
 _sf_async_config.idSync = _sf_async_config.idSync || {};
 if (document.cookie.indexOf(cookiePrefix) !== -1) {
 var cookieSplit = document.cookie.split(';');
 var cookieLength = cookieSplit.length;
 while (cookieLength--) {
 var cookie = cookieSplit[cookieLength].replace(/^\s+|\s+$/g '');
 var cookieName = cookie.split('=')[0];
 if (cookieName.indexOf(cookiePrefix) === 0) {
 _sf_async_config.idSync.bbc_hid = cookieSplit[cookieLength].split('=')[1];
 break;
 }
 }
 }
 }());
 /** CONFIGURATION END **/
 (function(){
 function loadChartbeat() {
 window._sf_endpt=(new Date()).getTime();
 var e = document.createElement("script");
 e.setAttribute("language" "javascript");
 e.setAttribute("type" "text/javascript");
 e.setAttribute('src' '//static.chartbeat.com/js/chartbeat.js');
 document.body.appendChild(e);
 }
 var oldonload = window.onload;
 window.onload = (typeof window.onload != "function") ?
 loadChartbeat : function() { oldonload(); loadChartbeat(); };
 }());
</script>
<!-- Chartbeat Web Analytics code - end -->
 <!-- mpulse start -->
<script>
(function(){
 window.bbcnewsperformance = {};
 var perf = window.performance;
 function firstScrollTimer() {
 document.removeEventListener('scroll' firstScrollTimer);
 perf.mark('firstScroll');
 perf.measure('scrolltime' 'firstScroll');
 var timing = perf.getEntriesByName('scrolltime');
 bbcnewsperformance.firstScrollTime = timing[0].startTime;
 }
 if (perf && perf.mark && perf.measure) {
 document.addEventListener('scroll' firstScrollTimer);
 }
 var random = Math.random();
 var rate = 0.25;
 var throttle = 0.02;
 var forceMpulse = window.location.href.match(/force_mpulse/);
 if (rate && throttle && (random < (rate * throttle)) || forceMpulse) {
 if(window.BOOMR && window.BOOMR.version){return;}
 var dom doc where iframe = document.createElement('iframe') win = window;
 function boomerangSaveLoadTime(e) {
 win.BOOMR_onload=(e && e.timeStamp) || new Date().getTime();
 }
 if (win.addEventListener) {
 win.addEventListener("load" boomerangSaveLoadTime false);
 } else if (win.attachEvent) {
 win.attachEvent("onload" boomerangSaveLoadTime);
 }
 iframe.src = "javascript:false";
 iframe.title = ""; iframe.role="presentation";
 (iframe.frameElement || iframe).style.cssText = "width:0;height:0;border:0;display:none;";
 where = document.getElementsByTagName('script')[0];
 where.parentNode.insertBefore(iframe where);
 try {
 doc = iframe.contentWindow.document;
 } catch(e) {
 dom = document.domain;
 iframe.src="javascript:var d=document.open();d.domain='"+dom+"';void(0);";
 doc = iframe.contentWindow.document;
 }
 doc.open()._l = function() {
 var js = this.createElement("script");
 if(dom) this.domain = dom;
 js.id = "boomr-if-as";
 js.src = '//c.go-mpulse.net/boomerang/' +
 '86ZLR-T78UG-6FNFN-UVDPZ-VZFWR';
 BOOMR_lstart=new Date().getTime();
 this.body.appendChild(js);
 };
 doc.write('<body onload="document._l();">');
 doc.close();
 }
})();
</script>
<!-- mpulse end -->
 </body> </html> 

We give up -- to much noise in this page! How can we get just the text out of this?

Let us use existing libraries.

The first we try is called BeautifulSoup. It is a library to parse "noisy" HTML in general.
Once parsed, the HTML string can be navigated in a convenient manner. Make sure you install beautifulsoup4 by running:

% pip install beautifulsoup4

We can then run this:

In [8]:
! pip install beautifulSoup4
Collecting beautifulSoup4
  Downloading https://files.pythonhosted.org/packages/3b/c8/a55eb6ea11cd7e5ac4bacdf92bac4693b90d3ba79268be16527555e186f0/beautifulsoup4-4.8.1-py3-none-any.whl (101kB)
Collecting soupsieve>=1.2
  Downloading https://files.pythonhosted.org/packages/81/94/03c0f04471fc245d08d0a99f7946ac228ca98da4fa75796c507f61e688c2/soupsieve-1.9.5-py2.py3-none-any.whl
Installing collected packages: soupsieve, beautifulSoup4
Successfully installed beautifulSoup4-4.8.1 soupsieve-1.9.5
In [9]:
from bs4 import BeautifulSoup

def clean_html1(html):
    soup = BeautifulSoup(html)
    return soup.get_text()

Let us try this version of clean_html:

In [10]:
print(clean_html1(html))






An hour to catch the coding bug - BBC News




 window.orb_fig_blocking = true; 





































 {"@context":"http:\/\/schema.org" "@type":"ReportageNewsArticle" "url":"https:\/\/www.bbc.com\/news\/technology-26415021" "publisher":{"@type":"NewsMediaOrganization" "name":"BBC News" "publishingPrinciples":"http:\/\/www.bbc.co.uk\/news\/help-41670342" "logo":{"@type":"ImageObject" "url":"https:\/\/www.bbc.co.uk\/news\/special\/2015\/newsspec_10857\/bbc_news_logo.png?cb=1"}} "datePublished":"2014-03-03T10:22:55+00:00" "dateModified":"2014-03-03T10:22:55+00:00" "headline":"How to get your children coding" "image":{"@type":"ImageObject" "width":720 "height":450 "url":"https:\/\/ichef.bbci.co.uk\/news\/720\/media\/images\/73325000\/jpg\/_73325163_olly009.jpg"} "thumbnailUrl":"https:\/\/ichef.bbci.co.uk\/news\/208\/media\/images\/73325000\/jpg\/_73325163_olly009.jpg" "author":{"@type":"Person" "name":"Mark Ward"} "mainEntityOfPage":"https:\/\/www.bbc.com\/news\/technology-26415021"}
 















var _sf_startpt=(new Date()).getTime()

 (function() {
 if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
 var msViewportStyle = document.createElement("style");
 msViewportStyle.appendChild(
 document.createTextNode("@-ms-viewport{width:auto!important}")
 );
 document.getElementsByTagName("head")[0].appendChild(msViewportStyle);
 }
 })();
 
window.fig = window.fig || {}; window.fig.async = true;

window.bbcredirection={geo:true}







/*<![CDATA[*/
 window.orb = {
 lang: 'en' 
 bbcBaseUrl: 'https://www.bbc.co.uk' 
 bbcUrlPrefix: 'https://www.' 
 staticHost: 'https://nav.files.bbci.co.uk/orbit/a07e26191aed6a8725358c88df999791' 
 figUrl: 'https://fig.bbc.co.uk/frameworks/fig/2/fig.js' 
 partialCookieOvenUrl: 'https://cookie-oven.api.bbc'
 };
 document.documentElement.className += (document.documentElement.className? ' ' : '') + 'orb-js';
 window.orb.worldwideNavlinks = '<li class="orb-nav-homedotcom"><a href="https://www.bbc.com/">Home</a></li><li class="orb-nav-newsdotcom"><a href="https://www.bbc.com/news">News</a></li><li class="orb-nav-sport"><a href="https://www.bbc.com/sport">Sport</a></li><li class="orb-nav-reeldotcom"><a href="https://www.bbc.com/reel">Reel</a></li><li class="orb-nav-worklife"><a href="https://www.bbc.com/worklife">Worklife</a></li><li class="orb-nav-traveldotcom"><a href="https://www.bbc.com/travel">Travel</a></li><li class="orb-nav-future"><a href="https://www.bbc.com/future">Future</a></li><li class="orb-nav-culture"><a href="https://www.bbc.com/culture">Culture</a></li><li class="orb-nav-music"><a href="https://www.bbc.com/culture/music">Music</a></li><li class="orb-nav-tv"><a href="https://www.bbc.co.uk/schedules/p00fzl9m">TV</a></li><li class="orb-nav-weather"><a href="https://www.bbc.com/weather">Weather</a></li><li class="orb-nav-sounds"><a href="https://www.bbc.co.uk/sounds">Sounds</a></li>';
 /*]]>*/// Promise polyfill from https://github.com/bramstein/promis
 (function(){'use strict';var f g=[];function l(a){g.push(a);1==g.length&&f()}function m(){for(;g.length;)g[0]() g.shift()}f=function(){setTimeout(m)};function n(a){this.a=p;this.b=void 0;this.f=[];var b=this;try{a(function(a){q(b a)} function(a){r(b a)})}catch(c){r(b c)}}var p=2;function t(a){return new n(function(b c){c(a)})}function u(a){return new n(function(b){b(a)})}function q(a b){if(a.a==p){if(b==a)throw new TypeError;var c=!1;try{var d=b&&b.then;if(null!=b&&"object"==typeof b&&"function"==typeof d){d.call(b function(b){c||q(a b);c=!0} function(b){c||r(a b);c=!0});return}}catch(e){c||r(a e);return}a.a=0;a.b=b;v(a)}} function r(a b){if(a.a==p){if(b==a)throw new TypeError;a.a=1;a.b=b;v(a)}}function v(a){l(function(){if(a.a!=p)for(;a.f.length;){var b=a.f.shift() c=b[0] d=b[1] e=b[2] b=b[3];try{0==a.a?"function"==typeof c?e(c.call(void 0 a.b)):e(a.b):1==a.a&&("function"==typeof d?e(d.call(void 0 a.b)):b(a.b))}catch(h){b(h)}}})}n.prototype.g=function(a){return this.c(void 0 a)};n.prototype.c=function(a b){var c=this;return new n(function(d e){c.f.push([a b d e]);v(c)})}; function w(a){return new n(function(b c){function d(c){return function(d){h[c]=d;e+=1;e==a.length&&b(h)}}var e=0 h=[];0==a.length&&b(h);for(var k=0;k<a.length;k+=1)u(a[k]).c(d(k) c)})}function x(a){return new n(function(b c){for(var d=0;d<a.length;d+=1)u(a[d]).c(b c)})};window.Promise||(window.Promise=n window.Promise.resolve=u window.Promise.reject=t window.Promise.race=x window.Promise.all=w window.Promise.prototype.then=n.prototype.c window.Promise.prototype["catch"]=n.prototype.g);}());
 
 
 // Polyfill Event constructor for IE ref: https://jira.dev.bbc.co.uk/browse/ORBITEN-919
 // see: https://stackoverflow.com/questions/26596123
 (function () {
 if (typeof window.CustomEvent === "function") {
 return false;
 }
 function CustomEvent(event params) {
 params = params || { bubbles: false cancelable: false detail: undefined };
 var evt = document.createEvent('CustomEvent');
 evt.initCustomEvent(event params.bubbles params.cancelable params.detail);
 return evt;
 }
 CustomEvent.prototype = window.Event.prototype;
 window.Event = CustomEvent;
 })();
 
 
 //Element.prototype.matches polyfill
 //from https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill
 if (!Element.prototype.matches) {
 Element.prototype.matches = Element.prototype.msMatchesSelector ||
 Element.prototype.webkitMatchesSelector;
 }
 //NodeList.forEach Polyfill
 //from https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach#Polyfill
 if (window.NodeList && !NodeList.prototype.forEach) {
 NodeList.prototype.forEach = Array.prototype.forEach;
 }
 
 // Object.assign polyfill from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill
 if (typeof Object.assign != 'function') {
 // Must be writable: true enumerable: false configurable: true
 Object.defineProperty(Object "assign" {
 value: function assign(target varArgs) { // .length of function is 2
 'use strict';
 if (target == null) { // TypeError if undefined or null
 throw new TypeError('Cannot convert undefined or null to object');
 }
 
 var to = Object(target);
 
 for (var index = 1; index < arguments.length; index++) {
 var nextSource = arguments[index];
 
 if (nextSource != null) { // Skip over if undefined or null
 for (var nextKey in nextSource) {
 // Avoid bugs when hasOwnProperty is shadowed
 if (Object.prototype.hasOwnProperty.call(nextSource nextKey)) {
 to[nextKey] = nextSource[nextKey];
 }
 }
 }
 }
 return to;
 } 
 writable: true 
 configurable: true
 });
 }
 
 // window.fetch polyfill https://github.com/github/fetch/blob/v0.11.0/fetch.js - chosen for IE9 compatibility
 if(typeof window.fetch !== 'function') {
 (function(self){"use strict";if(self.fetch){return}function normalizeName(name){if(typeof name!=="string"){name=String(name)}if(/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(name)){throw new TypeError("Invalid character in header field name")}return name.toLowerCase()}function normalizeValue(value){if(typeof value!=="string"){value=String(value)}return value}function Headers(headers){this.map={};if(headers instanceof Headers){headers.forEach(function(value name){this.append(name value)} this)}else if(headers){Object.getOwnPropertyNames(headers).forEach(function(name){this.append(name headers[name])} this)}}Headers.prototype.append=function(name value){name=normalizeName(name);value=normalizeValue(value);var list=this.map[name];if(!list){list=[];this.map[name]=list}list.push(value)};Headers.prototype["delete"]=function(name){delete this.map[normalizeName(name)]};Headers.prototype.get=function(name){var values=this.map[normalizeName(name)];return values?values[0]:null};Headers.prototype.getAll=function(name){return this.map[normalizeName(name)]||[]};Headers.prototype.has=function(name){return this.map.hasOwnProperty(normalizeName(name))};Headers.prototype.set=function(name value){this.map[normalizeName(name)]=[normalizeValue(value)]};Headers.prototype.forEach=function(callback thisArg){Object.getOwnPropertyNames(this.map).forEach(function(name){this.map[name].forEach(function(value){callback.call(thisArg value name this)} this)} this)};function consumed(body){if(body.bodyUsed){return Promise.reject(new TypeError("Already read"))}body.bodyUsed=true}function fileReaderReady(reader){return new Promise(function(resolve reject){reader.onload=function(){resolve(reader.result)};reader.onerror=function(){reject(reader.error)}})}function readBlobAsArrayBuffer(blob){var reader=new FileReader;reader.readAsArrayBuffer(blob);return fileReaderReady(reader)}function readBlobAsText(blob){var reader=new FileReader;reader.readAsText(blob);return fileReaderReady(reader)}var support={blob:"FileReader"in self&&"Blob"in self&&function(){try{new Blob;return true}catch(e){return false}}() formData:"FormData"in self arrayBuffer:"ArrayBuffer"in self};function Body(){this.bodyUsed=false;this._initBody=function(body){this._bodyInit=body;if(typeof body==="string"){this._bodyText=body}else if(support.blob&&Blob.prototype.isPrototypeOf(body)){this._bodyBlob=body}else if(support.formData&&FormData.prototype.isPrototypeOf(body)){this._bodyFormData=body}else if(!body){this._bodyText=""}else if(support.arrayBuffer&&ArrayBuffer.prototype.isPrototypeOf(body)){}else{throw new Error("unsupported BodyInit type")}if(!this.headers.get("content-type")){if(typeof body==="string"){this.headers.set("content-type" "text/plain;charset=UTF-8")}else if(this._bodyBlob&&this._bodyBlob.type){this.headers.set("content-type" this._bodyBlob.type)}}};if(support.blob){this.blob=function(){var rejected=consumed(this);if(rejected){return rejected}if(this._bodyBlob){return Promise.resolve(this._bodyBlob)}else if(this._bodyFormData){throw new Error("could not read FormData body as blob")}else{return Promise.resolve(new Blob([this._bodyText]))}};this.arrayBuffer=function(){return this.blob().then(readBlobAsArrayBuffer)};this.text=function(){var rejected=consumed(this);if(rejected){return rejected}if(this._bodyBlob){return readBlobAsText(this._bodyBlob)}else if(this._bodyFormData){throw new Error("could not read FormData body as text")}else{return Promise.resolve(this._bodyText)}}}else{this.text=function(){var rejected=consumed(this);return rejected?rejected:Promise.resolve(this._bodyText)}}if(support.formData){this.formData=function(){return this.text().then(decode)}}this.json=function(){return this.text().then(JSON.parse)};return this}var methods=["DELETE" "GET" "HEAD" "OPTIONS" "POST" "PUT"];function normalizeMethod(method){var upcased=method.toUpperCase();return methods.indexOf(upcased)>-1?upcased:method}function Request(input options){options=options||{};var body=options.body;if(Request.prototype.isPrototypeOf(input)){if(input.bodyUsed){throw new TypeError("Already read")}this.url=input.url;this.credentials=input.credentials;if(!options.headers){this.headers=new Headers(input.headers)}this.method=input.method;this.mode=input.mode;if(!body){body=input._bodyInit;input.bodyUsed=true}}else{this.url=input}this.credentials=options.credentials||this.credentials||"omit";if(options.headers||!this.headers){this.headers=new Headers(options.headers)}this.method=normalizeMethod(options.method||this.method||"GET");this.mode=options.mode||this.mode||null;this.referrer=null;if((this.method==="GET"||this.method==="HEAD")&&body){throw new TypeError("Body not allowed for GET or HEAD requests")}this._initBody(body)}Request.prototype.clone=function(){return new Request(this)};function decode(body){var form=new FormData;body.trim().split("&").forEach(function(bytes){if(bytes){var split=bytes.split("=");var name=split.shift().replace(/\+/g " ");var value=split.join("=").replace(/\+/g " ");form.append(decodeURIComponent(name) decodeURIComponent(value))}});return form}function headers(xhr){var head=new Headers;var pairs=xhr.getAllResponseHeaders().trim().split("\n");pairs.forEach(function(header){var split=header.trim().split(":");var key=split.shift().trim();var value=split.join(":").trim();head.append(key value)});return head}Body.call(Request.prototype);function Response(bodyInit options){if(!options){options={}}this.type="default";this.status=options.status;this.ok=this.status>=200&&this.status<300;this.statusText=options.statusText;this.headers=options.headers instanceof Headers?options.headers:new Headers(options.headers);this.url=options.url||"";this._initBody(bodyInit)}Body.call(Response.prototype);Response.prototype.clone=function(){return new Response(this._bodyInit {status:this.status statusText:this.statusText headers:new Headers(this.headers) url:this.url})};Response.error=function(){var response=new Response(null {status:0 statusText:""});response.type="error";return response};var redirectStatuses=[301 302 303 307 308];Response.redirect=function(url status){if(redirectStatuses.indexOf(status)===-1){throw new RangeError("Invalid status code")}return new Response(null {status:status headers:{location:url}})};self.Headers=Headers;self.Request=Request;self.Response=Response;self.fetch=function(input init){return new Promise(function(resolve reject){var request;if(Request.prototype.isPrototypeOf(input)&&!init){request=input}else{request=new Request(input init)}var xhr=new XMLHttpRequest;function responseURL(){if("responseURL"in xhr){return xhr.responseURL}if(/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())){return xhr.getResponseHeader("X-Request-URL")}return}xhr.onload=function(){var status=xhr.status===1223?204:xhr.status;if(status<100||status>599){reject(new TypeError("Network request failed"));return}var options={status:status statusText:xhr.statusText headers:headers(xhr) url:responseURL()};var body="response"in xhr?xhr.response:xhr.responseText;resolve(new Response(body options))};xhr.onerror=function(){reject(new TypeError("Network request failed"))};xhr.open(request.method request.url true);if(request.credentials==="include"){xhr.withCredentials=true}if("responseType"in xhr&&support.blob){xhr.responseType="blob"}request.headers.forEach(function(value name){xhr.setRequestHeader(name value)});xhr.send(typeof request._bodyInit==="undefined"?null:request._bodyInit)})};self.fetch.polyfill=true})(typeof self!=="undefined"?self:this);
 }
 
 if (typeof window.CustomEvent !== 'function') {
 
 function CustomEvent(event params) {
 params = params || { bubbles: false cancelable: false detail: null };
 var evt = document.createEvent('CustomEvent');
 evt.initCustomEvent(event params.bubbles params.cancelable params.detail);
 return evt;
 }
 
 CustomEvent.prototype = window.Event.prototype;
 
 window.CustomEvent = CustomEvent;
 
 }
 
 (function() {
 
 var language = 'en';
 language = 'en';
 
 var modal = false;
 
 
 var istatsLabels = {name: 'news.technology.story.26415021.page' || undefined};
 istatsLabels['pal_route'] = 'asset';
 istatsLabels['language'] = 'en-GB';
 istatsLabels['pal_webapp'] = 'tabloid';
 istatsLabels['prod_name'] = 'news';
 istatsLabels['app_name'] = 'news';
 istatsLabels['cps_asset_id'] = '26415021';
 istatsLabels['page_type'] = 'Story';
 istatsLabels['section'] = '%2Fnews%2Ftechnology';
 istatsLabels['first_pub'] = '2014-03-03T07%3A36%3A59%2B00%3A00';
 istatsLabels['last_editorial_update'] = '2014-03-03T10%3A22%3A55%2B00%3A00';
 istatsLabels['curie'] = '52db3466-0acb-3a48-98c6-21a6e4f5f1cf';
 istatsLabels['title'] = 'An+hour+to+catch+the+coding+bug';
 istatsLabels['has_video'] = '';
 istatsLabels['topic_names'] = '';
 istatsLabels['topic_ids'] = '';
 istatsLabels['for_nation'] = 'il';
 istatsLabels['app_version'] = '1.303.0';
 istatsLabels['app_type'] = 'responsive';
 istatsLabels['bbc_site'] = 'news';
 
 function getMetaValue(propertyName) {
 var metaTag = document.querySelector(
 "meta[property='" + propertyName + "'] " +
 "meta[name='" + propertyName + "']");
 if (metaTag) {
 return metaTag.getAttribute("content");
 } else {
 throw new Error('No meta tag called: ' + propertyName)
 }
 }
 
 function generateCountername() {
 var pathName = window.location.pathname
 .replace(/\/$/ "")
 .replace(/^\// "")
 .replace(/\//g '.');
 return pathName + '.page';
 }
 
 var additionalPageProperties = {};
 additionalPageProperties['content_language'] = 'en-gb';
 additionalPageProperties['custom_var_1'] = '2014-03-03T10:22:55+00:00';
 additionalPageProperties['custom_var_2'] = '2014-03-03T10:22:55+00:00';
 additionalPageProperties['app_name'] = 'news';
 
 var page = {
 name: 'news.technology.story.26415021.page' || istatsLabels.name || generateCountername() 
 destination: 'NEWS_GNL' || null 
 producer: 'NEWS' || null 
 section: 'technology' || null 
 site: '' || istatsLabels.bbc_site || istatsLabels.app_name || istatsLabels.prod_name || null 
 contentId: 'urn:bbc:cps:52db3466-0acb-3a48-98c6-21a6e4f5f1cf' || null 
 contentType: 'article' || null 
 edition: '' || null 
 additionalProperties: additionalPageProperties
 };
 
 function updatePageData(newData) {
 page = Object.assign(page newData);
 }
 
 document.addEventListener('bbc-page-reset' function(event) {
 if (event.detail && event.detail.page) {
 updatePageData(event.detail.page);
 }
 document.dispatchEvent(new Event('bbc-page-updated'));
 });
 
 window.bbcpage = {
 loadModule: function(deps) {
 return new Promise(function (resolve reject) {
 window.require(deps function () {
 resolve.apply(this arguments);
 } 
 function (error) {
 reject(error);
 });
 })
 } 
 loadCSS: function (url timeout) {
 return window.bbcpage.loadModule(['orb/lib/_$'])
 .then(function($) {
 return new Promise(function(resolve reject) {
 var stylesheet = loadCSS(url);
 $.onloadCSS(stylesheet function() {
 resolve();
 });
 if (timeout) {
 setTimeout(function () { reject(); } timeout);
 }
 });
 });
 } 
 isModal: function () {
 return modal;
 } 
 getLanguage: function () {
 return new Promise(function(resolve reject) {
 resolve(language);
 });
 } 
 trackRegion: function (region labels) {
 return window.bbcpage.loadModule(['istats-1'])
 .then(function(istats) {
 
 var trackLabels = {
 region: region
 };
 
 for (var label in labels) {
 trackLabels[label] = labels[label];
 }
 
 var linkType = labels.linkType || 'internal';
 
 istats.track(linkType trackLabels);
 });
 } 
 getName: function() {
 return Promise.resolve(page.name);
 } 
 getDestination: function() {
 return Promise.resolve(page.destination);
 } 
 getProducer: function() {
 return Promise.resolve(page.producer);
 } 
 getSite: function() {
 return Promise.resolve(page.site);
 } 
 getSection: function() {
 return Promise.resolve(page.section);
 } 
 getContentType: function() {
 return Promise.resolve(page.contentType);
 } 
 getContentId: function() {
 return Promise.resolve(page.contentId);
 } 
 getEdition: function() {
 return new Promise(function (resolve reject) {
 if (page.edition) {
 resolve(page.edition);
 return;
 }
 try {
 resolve(getMetaValue('x-audience').toLowerCase());
 } catch (err){
 // This property is related to Chartbeat; see http://support.chartbeat.com/docs/
 if (window._sf_async_config) {
 resolve(window._sf_async_config.region || null);
 }
 }
 resolve(null);
 });
 } 
 getReferrer: function() {
 return Promise.resolve(window.orb && window.orb.referrer !== null && window.orb.referrer !== undefined ? window.orb.referrer : document.referrer);
 } 
 getAdditionalProperties: function() {
 return Promise.resolve(page.additionalProperties);
 }
 };
 
 var USERINFO_URL = "";
 var USERINFO_PREFIX = "www." || "www.";
 
 function initUserCache(orbitUser) {
 var availableAttr = [
 'X-Country' 
 'X-Ip_is_advertise_combined' 
 'X-Ip_is_uk_combined'
 ];
 var userCache = availableAttr.reduce(function(user curr i) {
 if (!orbitUser[curr]) {
 return user;
 }
 var res = Object.assign({} user);
 res[curr] = orbitUser[curr];
 return res;
 } {});
 if (Object.keys(userCache).length !== availableAttr.length) {
 userCache._partial = true;
 }
 return userCache;
 }
 
 var user = initUserCache({
 });
 
 function checkStatus(response) {
 if (response.status >= 200 && response.status < 300) {
 return response;
 } else {
 var error = new Error(response.statusText);
 error.response = response;
 throw error;
 }
 }
 
 function parseJSON(response) {
 return response.json();
 }
 
 var supportsCors = function() {
 return typeof XMLHttpRequest !== 'undefined' &&
 'withCredentials' in new XMLHttpRequest();
 };
 
 var getUserInfoFallback = function() {
 return window.bbcpage.loadModule(['orb/fig'])
 .then(function(orbFig) {
 return new Promise(function(resolve reject) {
 orbFig.load(function(fig) {
 var getCountryFallback = function() {
 if (fig.geo.isUK()) {
 return 'GB';
 } else if (fig.geo.isEU()) {
 return 'EU';
 }
 };
 resolve({
 'X-Country': user.country || getCountryFallback() 
 'X-Ip_is_uk_combined': fig().uk ? 'yes' : 'no' 
 'X-Ip_is_advertise_combined': fig().ad ? 'yes' : 'no'
 });
 } function () {
 reject('Error determining country. Timeout?');
 });
 });
 });
 };
 
 var _userInfoRequest;
 var getUserInfo = function() {
 
 var host = window.location.host.toString().match(/bbc\.com$/) ? 'bbc.com' : 'bbc.co.uk';
 var userInfoUrl = USERINFO_URL || window.location.protocol + "//" + USERINFO_PREFIX + host + '/userinfo';
 
 if (!user._partial) {
 return Promise.resolve(user);
 }
 
 if (!_userInfoRequest) {
 if (typeof window.fetch === 'undefined' || !supportsCors()) {
 _userInfoRequest = getUserInfoFallback();
 } else {
 _userInfoRequest = window.fetch(userInfoUrl { credentials: 'same-origin' })
 .then(checkStatus)
 .then(parseJSON)
 .then(function(userInfo) {
 user = userInfo;
 return user;
 });
 }
 }
 
 return _userInfoRequest;
 };
 
 window.bbcuser = {
 getHashedId: function() {
 return window.bbcpage.loadModule(['idcta-v2/idcta-1'])
 .then(function(idcta) {
 return idcta.getCookieInstance().getHidFromCookie();
 });
 } 
 
 getCountry: function() {
 if (user['X-Country']) {
 return Promise.resolve(user['X-Country']);
 }
 return getUserInfo().then(function(userInfo) {
 return userInfo['X-Country'] || 'GB';
 });
 } 
 
 isUKCombined: function() {
 return getUserInfo().then(function(userInfo) {
 if (!userInfo['X-Ip_is_uk_combined']) {
 throw new Error('missing isUKCombined from userinfo response');
 }
 return userInfo['X-Ip_is_uk_combined'].toLowerCase() === 'yes';
 })
 } 
 
 canSeeAdverts: function() {
 return getUserInfo().then(function(userInfo) {
 if (!userInfo['X-Ip_is_advertise_combined']) {
 throw new Error('missing canSeeAdverts from userinfo response');
 }
 return userInfo['X-Ip_is_advertise_combined'].toLowerCase() === "yes";
 });
 } 
 
 isSignedIn: function() {
 return window.bbcpage.loadModule(['idcta-v2/idcta-1'])
 .then(function(idcta) {
 return (idcta && idcta.getCookieInstance().hasCookie());
 });
 } 
 allowsPerformanceCookies: function() {
 return window.bbcpage.loadModule(['orb/cookies'])
 .then(function(bbccookies) {
 return !!bbccookies.cookiesEnabled() && !!bbccookies.readPolicy('performance');
 });
 } 
 allowsFunctionalCookies: function() {
 return window.bbcpage.loadModule(['orb/cookies'])
 .then(function(bbccookies) {
 return !!bbccookies.cookiesEnabled() && !!bbccookies.readPolicy('personalisation');
 });
 } 
 getCookieValue: function(cookieName) {
 return window.bbcpage.loadModule(['orb/cookies'])
 .then(function(bbccookies) {
 return bbccookies.get(cookieName);
 });
 } 
 resetCookiesPreferences: function() {
 return window.bbcpage.loadModule(['orb/cookies'])
 .then(function(bbccookies) {
 bbccookies.setDefaultCookiesSingleDomain();
 });
 } 
 hasCookiesEnabled: function() {
 return window.bbcpage.loadModule(['orb/cookies'])
 .then(function(bbccookies) {
 return !!bbccookies.cookiesEnabled();
 });
 } 
 hasSeenCookieBanner: function() {
 return window.bbcpage.loadModule(['orb/cookies'])
 .then(function (bbccookies) {
 return !!bbccookies.isCookiePolicySet();
 });
 } 
 logEvent: function (verb noun extraLabels) {
 return window.bbcuser.hasCookiesEnabled()
 .then(function(allowsCookies) {
 if (allowsCookies) {
 return window.bbcpage.loadModule(['istats-1'])
 .then(function(istats) {
 istats.log(verb noun extraLabels);
 });
 } else {
 throw new Error('User cannot be tracked due to cookies preferences.');
 }
 });
 } 
 };
 
 }()); if (window.define !== undefined) {
 define('orb/cookies' function() {
 return window.bbccookies;
 });
 } window.bbcFlagpoles_istats="ON" require.config({paths:{"istats-1":"https://nav.files.bbci.co.uk/orbit-webmodules/0.0.2-398.6553dba/istats/istats-1"}}) require(["istats-1" "orb/cookies"] function(a t){if(t.isAllowed("s1")){var e=(o=document.location.href.match(/^(?:https|http):\/\/\w*\.(?:(int|test|stage|live|)\.)?bbc\.(?:co\.uk|com)/))?void 0===o[1]||""===o[1]||"live"===o[1]?"//sa.bbc.co.uk/bbc/bbc/s":"//sa.bbc.co.uk/bbc/"+o[1]+"/s":"//sa.bbc.co.uk/bbc/test/s";a.addCollector({name:"default" url:e separator:"&"});var s="news.technology.story.26415021.page";a.setCountername(s) window.istats_countername&&a.setCountername(window.istats_countername) a.addLabels("ml_name=webmodule&ml_version=0.0.2-398.6553dba&blq_e=orbit&blq_r=orbit&blq_s=orbit&blq_v=default&language=en&pal_route=asset&language=en-GB&pal_webapp=tabloid&prod_name=news&app_name=news&cps_asset_id=26415021&page_type=Story&section=%2Fnews%2Ftechnology&first_pub=2014-03-03T07%3A36%3A59%2B00%3A00&last_editorial_update=2014-03-03T10%3A22%3A55%2B00%3A00&curie=52db3466-0acb-3a48-98c6-21a6e4f5f1cf&title=An+hour+to+catch+the+coding+bug&has_video=&topic_names=&topic_ids=&for_nation=il&app_version=1.303.0&app_type=responsive&bbc_site=news")}var o});(function() {if (!window.require) {throw new Error('idcta: could not find require module');}if (typeof(map) == 'undefined') {var map = {};}if (!!document.createElementNS && !!document.createElementNS('http://www.w3.org/2000/svg' 'svg').createSVGRect) {document.documentElement.className += ' id-svg';}var ptrt = new RegExp("[\\?&]ptrt=([^&]*)").exec(document.location.href);var ENDPOINT_URL = 'https://idcta.api.bbc.co.uk';var ENDPOINT_CONFIG = ('/idcta/config?callback=&ptrt=' + encodeURIComponent((ptrt ? ptrt[1] : document.location.href))).replace(/\&amp;/g '&');var ENDPOINT_TRANSLATIONS = '/idcta/translations?callback=';function hasPromise() {var P = window.Promise;var promiseToString = null;if (P) {try {promiseToString = Object.prototype.toString.call(P.resolve());} catch(e) {/*silently ignored*/}}return (promiseToString === '[object Promise]' && !P.cast);}if (hasPromise()) {define('idcta/es6-promise' function() {return window.Promise;});define('idcta-v2/es6-promise' function() {return window.Promise;});}map['idcta-v2'] = 'https://mybbc.files.bbci.co.uk/s/id/account-idcta/1.23.4/modules/idcta-v2';map['idcta-v2/config'] = ENDPOINT_URL + ENDPOINT_CONFIG;map['idcta-v2/translations'] = ENDPOINT_URL + ENDPOINT_TRANSLATIONS;map['idcta'] = 'https://mybbc.files.bbci.co.uk/s/id/account-idcta/1.8.2/modules/idcta';map['idcta-v2/idcta-1'] = 'https://mybbc.files.bbci.co.uk/s/id/account-idcta/1.23.4/modules/idcta-v2/dist/idcta-1.min';const idctaShim = {deps: ['idcta-v2/idcta-1'] };require({shim: {'idcta-v2/statusbar': idctaShim 'idcta-v2/id-config': idctaShim} map: {'*': {'idcta/idcta-1': 'idcta-v2/idcta-1' 'idcta': 'idcta-v2' }} paths: map});window.idctaBaseUrl = ENDPOINT_URL;define('idcta/config' ['idcta-v2/config'] function(data) {return data;});define('idcta/translations' ['idcta-v2/translations'] function(data) {return data;});})(); /*<![CDATA[*/ var _sf_startpt = (new Date()).getTime(); /*]]>*/.bbccom_display_none{display:none;}/*<![CDATA[*/ var bbcdotcomConfig googletag = googletag || {}; googletag.cmd = googletag.cmd || [] bbcdotcomScripts = [] tp = window.tp || []; var bbcdotcom = false; (function(){ if(typeof require !== 'undefined') { require({ paths:{ "bbcdotcom":"https://static.bbc.co.uk/bbcdotcom/3.3.0/script" } }); } })(); /*]]>*//*<![CDATA[*/ var bbcdotcom = { adverts: { keyValues: { set: function() {} } } advert: { write: function () {} show: function () {} isActive: function () { return false; } layout: function() { return { reset: function() {} } } } config: { init: function() {} isActive: function() {} setSections: function() {} isAdsEnabled: function() {} setAdsEnabled: function() {} isAnalyticsEnabled: function() {} setAnalyticsEnabled: function() {} setAssetPrefix: function() {} setFlagpoles: function() {} setVersion: function () {} setJsPrefix: function() {} setSwfPrefix: function() {} setCssPrefix: function() {} setConfig: function() {} getAssetPrefix: function() {} getJsPrefix: function () {} getSwfPrefix: function () {} getCssPrefix: function () {} isOptimizelyEnabled: function() {} } survey: { init: function(){ return false; } } data: {} init: function() {} objects: function(str) { return false; } locale: { set: function() {} get: function() {} } setAdKeyValue: function() {} utils: { addEvent: function() {} addHtmlTagClass: function() {} log: function () {} } addLoadEvent: function() {} }; /*]]>*//*<![CDATA[*/ (function(){ if (typeof orb !== 'undefined' && typeof orb.fig === 'function') { if (orb.fig('ad') && orb.fig('uk') == 0) { bbcdotcom.data = { ads: (orb.fig('ad') ? 1 : 0) stats: (orb.fig('uk') == 0 ? 1 : 0) statsProvider: orb.fig('ap') }; } } else { document.write('<script type="text/javascript" src="https://www.bbc.com/wwscripts/data">\x3C/script>'); } })(); /*]]>*//*<![CDATA[*/ (function(){ if (typeof orb === 'undefined' || typeof orb.fig !== 'function') { bbcdotcom.data = { ads: bbcdotcom.data.a stats: bbcdotcom.data.b statsProvider: bbcdotcom.data.c }; } if (bbcdotcom.data.ads == 1) { document.write('<script type="text/javascript" src="https://www.bbc.com/wwscripts/flag">\x3C/script>'); } })(); /*]]>*//*<![CDATA[*/ (function(){ if (window.bbcdotcom && (typeof bbcdotcom.flag == 'undefined' || (typeof bbcdotcom.data.ads !== 'undefined' && bbcdotcom.flag.a != 1))) { bbcdotcom.data.ads = 0; } if (/[?|&]ads/.test(window.location.href) || /(^|; )ads=on; /.test(document.cookie) || /; ads=on(; |$)/.test(document.cookie)) { bbcdotcom.data.ads = 1; bbcdotcom.data.stats = 1; } if (window.bbcdotcom && (bbcdotcom.data.ads == 1 || bbcdotcom.data.stats == 1)) { bbcdotcom.assetPrefix = "https://static.bbc.co.uk/bbcdotcom/3.3.0/"; if (/(sandbox|int)(.dev)*.bbc.co*/.test(window.location.href) || /[?|&]ads-debug/.test(window.location.href) || document.cookie.indexOf('ads-debug=') !== -1) { document.write('<script type="text/javascript" src="https://static.bbc.co.uk/bbcdotcom/3.3.0/script/dist/bbcdotcom.dev.js">\x3C/script>'); } else { document.write('<script type="text/javascript" src="https://static.bbc.co.uk/bbcdotcom/3.3.0/script/dist/bbcdotcom.js">\x3C/script>'); } } })(); /*]]>*/if (window.bbcdotcom && bbcdotcom.data.stats == 1) { document.write('<link rel="dns-prefetch" href="//secure-us.imrworldwide.com/">'); document.write('<link rel="dns-prefetch" href="//me-cdn.effectivemeasure.net/">'); document.write('<link rel="dns-prefetch" href="//ssc.api.bbc.com/">'); } if (window.bbcdotcom && bbcdotcom.data.ads == 1) { document.write('<link rel="dns-prefetch" href="//www.googletagservices.com/">'); document.write('<link rel="dns-prefetch" href="//bbc.gscontxt.net/">'); document.write('<link rel="dns-prefetch" href="//tags.crwdcntrl.net/">'); document.write('<link rel="dns-prefetch" href="//ad.crwdcntrl.net/">'); }if (window.bbcdotcom && bbcdotcom.data.ads == 1) { document.write('<meta name="google-site-verification" content="auTeTTwSt_KBY_4iDoR00Lwb7-qzx1IgzJy6ztaWgEI" />'); }/*<![CDATA[*/ (function(){ var GDPR_COUNTRIES = ['AT' 'BE' 'BG' 'HR' 'CY' 'CZ' 'DK' 'EE' 'FI' 'FR' 'DE' 'GR' 'HU' 'IE' 'IT' 'LV' 'LT' 'LU' 'MT' 'NL' 'PL' 'PT' 'RO' 'SK' 'SI' 'ES' 'SE' 'IS' 'LI' 'NO' 'CH']; if (window.bbcdotcom && (bbcdotcom.data.ads == 1 || bbcdotcom.data.stats == 1)) { bbcdotcomConfig = {"adFormat":"standard" "adKeyword":"" "adMode":"smart" "adsEnabled":true "appAnalyticsSections":"" "asyncEnabled":true "disableInitialLoad":false "advertInfoPageUrl":"https:\/\/www.bbc.com\/privacy\/cookies\/international\/" "advertisementText":"Advertisement" "analyticsEnabled":true "sherlockEnabled":false "appName":"" "assetPrefix":"https:\/\/static.bbc.co.uk\/bbcdotcom\/3.3.0\/" "customAdParams":[] "customStatsParams":[] "headline":"" "id":"" "inAssociationWithText":"in association with" "keywords":"" "language":"" "orbTransitional":false "optimizelyEnabled":true "palEnv":"live" "productName":"" "sections":[] "comScoreEnabled":true "comscoreSite":"bbc" "comscoreID":"19293874" "comscorePageName":"" "slots":"" "sponsoredByText":"is sponsored by" "adsByGoogleText":"Ads by Google" "summary":"" "type":"" "features":{"testfeature":{"name":"testfeature" "envs":["sandbox" "int" "test"] "on":true "options":{} "override":null} "lxadverts":{"name":"lxadverts" "envs":[] "on":true "options":{} "override":null}} "staticBase":"\/bbcdotcom" "staticHost":"https:\/\/static.bbc.co.uk" "staticVersion":"3.3.0" "staticPrefix":"https:\/\/static.bbc.co.uk\/bbcdotcom\/3.3.0" "dataHttp":"tps.bbc.com" "dataHttps":"www.bbc.com" "flagHttp":"www.bbc.co.uk" "flagHttps":"www.bbc.co.uk" "analyticsHttp":"sa.bbc.com" "analyticsHttps":"ssa.bbc.com"}; bbcdotcom.config.init(bbcdotcomConfig bbcdotcom.data window.location window.document); bbcdotcom.config.setFlagpoles(bbcdotcom.flag || {}); bbcdotcom.config.setAssetPrefix("https://static.bbc.co.uk/bbcdotcom/3.3.0/"); bbcdotcom.config.setVersion("3.3.0"); if (window.bbcuser && window.bbcuser.getCountry && typeof(window.bbcuser.getCountry) === 'function') { window.bbcuser.getCountry().then(function(countryCode) { var isEU = countryCode ? GDPR_COUNTRIES.indexOf(countryCode.toUpperCase()) !== -1 : false; bbcdotcom.config.setEU(isEU); }); } else if (window.orb && window.orb.fig && typeof(window.orb.fig) === 'function') { bbcdotcom.config.setEU(window.orb.fig('eu')); } document.write('<!--[if IE 7]><script type="text/javascript">bbcdotcom.config.setIE7(true);\x3C/script><![endif]-->'); document.write('<!--[if IE 8]><script type="text/javascript">bbcdotcom.config.setIE8(true);\x3C/script><![endif]-->'); document.write('<!--[if IE 9]><script type="text/javascript">bbcdotcom.config.setIE9(true);\x3C/script><![endif]-->'); if (/[?|&]ex-dp/.test(window.location.href) || document.cookie.indexOf('ex-dp=') !== -1) { bbcdotcom.utils.addHtmlTagClass('bbcdotcom-ex-dp'); } } })(); /*]]>*/var initOptimizely = (function(isEnabled){ if(!isEnabled) return; var logger = window.bbcdotcom.Logger('bbcdotcom:head:optimizely'); /* Allow Optimizely in these paths */ var allowPaths = ['/' '/wwhp']; /* Only run on optimizely on homepage */ if (bbcdotcom.utils && allowPaths.indexOf(window.location.pathname) !== -1){ /* set correct OptimizelyURL for prod or sandbox */ var optimizelyURL = "https://cdn.optimizely.com/public/4621041136/s/bbccom_sandbox.js"; if(window.location.hostname === 'www.bbc.com') { optimizelyURL = "https://cdn.optimizely.com/public/4621041136/s/bbccom_prod.js"; } /* Set cookie to 1 year */ window['optimizely'] = window['optimizely'] || []; window['optimizely'].push({ "type": "cookieExpiration" "cookieExpirationDays": 365 }); document.write('<script type="text/javascript" src="'+optimizelyURL+'">\x3C/script>'); } })( bbcdotcom.config.isOptimizelyEnabled() );/*<![CDATA[*/ if ( window.bbcdotcom && bbcdotcom.data && bbcdotcom.data.ads && bbcdotcom.data.ads == 1 && bbcdotcom.config && bbcdotcom.config.isGrapeshotEnabled && bbcdotcom.config.isGrapeshotEnabled() && bbcdotcom.config.isWorldService && !bbcdotcom.config.isWorldService() ) { var gs_channels="DEFAULT"; (function () { var gsurl = window.location.href.split("?")[0]; bbcdotcomScripts.push({src:'https://bbc.gscontxt.net/?url='+encodeURIComponent(gsurl)}); })(); } /*]]>*//*<![CDATA[*/ if (window.bbcdotcom && bbcdotcom.config && bbcdotcom.config.isLotameActive && bbcdotcom.config.isLotameActive()&& bbcdotcom.config.isLotameEnabled && bbcdotcom.config.isLotameEnabled()){ (function () { var clientId lotameUrl lotameAudienceUrl; clientId = (bbcdotcom.config.isWorldService && bbcdotcom.config.isWorldService()) ? '10826' : '10816'; lotameUrl = 'https://tags.crwdcntrl.net/c/'+clientId+'/cc.js?ns='+clientId; lotameAudienceUrl = 'https://ad.crwdcntrl.net/5/c=10815/pe=y/var=ccauds'; bbcdotcomScripts.push({src:lotameUrl id:"LOTCC"+clientId}); bbcdotcomScripts.push({src:lotameAudienceUrl}); })(); } /*]]>*//*<![CDATA[*/ /** * ASYNC waits to make any gpt requests until the bottom of the page */ if ( window.bbcdotcom && bbcdotcom.data && bbcdotcom.data.ads && bbcdotcom.data.ads == 1 && bbcdotcom.config && bbcdotcom.config.isAsync && bbcdotcom.config.isAsync() ) { (function () { bbcdotcomScripts.push({src:'https://securepubads.g.doubleclick.net/tag/js/gpt.js'}); })(); } /*]]>*//*<![CDATA[*/ /* Load Lotame Grapeshot and GPT without blocking rendering but executing in order */ if ( bbcdotcomScripts && bbcdotcomScripts.length > 0 ) { (function () { bbcdotcomScripts.forEach(function(item) { var script = document.createElement('script'); script.async = false; if(item.id) script.id = item.id; script.src = item.src; document.head.appendChild(script); }); })(); } /*]]>*//*<![CDATA[*/ (function() { window.bbcdotcom.head = true; }()); /*]]>*/// Globally available search context
 window.SEARCHBOX={"variant":"default" "locale":"en" "feature":"" "navSearchboxStaticPrefix":"https://nav.files.bbci.co.uk/searchbox/e8104f1649a8e9020708db403265fc37/" "searchboxAppStaticPrefix":"https://nav.files.bbci.co.uk/searchbox/e8104f1649a8e9020708db403265fc37/drawer" "searchFormHtml":"<div tabindex=\"-1\" data-reactroot=\"\" data-reactid=\"1\" data-react-checksum=\"842287743\"><div data-reactid=\"2\"><section class=\"se-searchbox-panel\" data-reactid=\"3\"><div class=\"se-g-wrap\" data-reactid=\"4\"><div class=\"se-g-layout\" data-reactid=\"5\"><div class=\"se-g-layout__item se-searchbox-title\" aria-hidden=\"true\" data-reactid=\"6\">search</div><div class=\"se-g-layout__item se-searchbox\" data-reactid=\"7\"><form accept-charset=\"utf-8\" id=\"searchboxDrawerForm\" method=\"get\" action=\"https://search.bbc.co.uk/search\" data-reactid=\"8\"><label class=\"se-searchbox__input\" for=\"se-searchbox-input-field\" data-reactid=\"9\"><span class=\"se-sr-only\" data-reactid=\"10\">Search Term</span><input type=\"text\" name=\"q\" value=\"\" id=\"se-searchbox-input-field\" class=\"se-searchbox__input__field\" maxlength=\"512\" autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" tabindex=\"0\" data-reactid=\"11\"/></label><input type=\"hidden\" name=\"scope\" value=\"\" data-reactid=\"12\"/><button type=\"submit\" class=\"se-searchbox__submit\" tabindex=\"0\" data-bbc-container=\"se-searchbox-panel\" data-bbc-title=\"search-icon\" data-bbc-metadata=\"{&quot;PAR&quot;:&quot;form::1&quot; &quot;CHD&quot;:&quot;button::1&quot;}\" data-reactid=\"13\">Search</button><button type=\"button\" class=\"se-searchbox__clear se-searchbox__clear--visible\" tabindex=\"0\" data-bbc-container=\"se-searchbox-panel\" data-bbc-title=\"clear-icon\" data-bbc-metadata=\"{&quot;PAR&quot;:&quot;form::1&quot; &quot;CHD&quot;:&quot;button::2&quot;}\" data-reactid=\"14\">Close</button></form></div></div></div></section><div aria-live=\"polite\" aria-atomic=\"true\" class=\"se-suggestions-container\" data-reactid=\"15\"><section class=\"se-g-wrap\" data-reactid=\"16\"></section></div></div></div>" "searchScopePlaceholder":"<input type=\"hidden\" name=\"scope\" id=\"orb-search-scope\" value=\"all\">" "searchScopeParam":"?scope=all" "searchScopeTemplate":"all" "searchPlaceholderWrapperStart":"" "searchPlaceholderWrapperEnd":""};
 window.SEARCHBOX.suppress = false;
 window.SEARCHBOX.searchScope = SEARCHBOX.searchScopeTemplate.split('-')[0];require.config({
 "paths": {
 "orb/async/_footerpromo": 'https://nav.files.bbci.co.uk/navpromo/14e5b4661a09bc7754808edab113a159/js/async/_footerpromo'
 }
 }); "use strict";!function(){window.__reverbStaticLocation="https://mybbc-analytics.files.bbci.co.uk/reverb-client-js/" window.__smarttagVersion="5.17.1" window.__reverb={} window.__reverb.__reverbLoadedPromise=new Promise(function(e n){window.__reverb.__resolveReverbLoaded=e window.__reverb.__rejectReverbLoaded=n}) window.__reverb.__reverbTimeout=setTimeout(function(){window.__reverb.__rejectReverbLoaded()} 5e3);var n=function(r d){window.__reverb.__reverbLoadedPromise.then(function(e){if(r&&r.detail){var n=r.detail.label t=r.detail.type i=r.detail.elem o=r.detail.originalEvent;r.detail.isClick&&(d=r.detail.isClick) e.userActionEvent(t n r.detail i o d)}} function(){console.log("Reverb failed to load. Event not sent")})};document.addEventListener("bbc-user-event" function(e){n(e !1)}) document.addEventListener("bbc-user-click" function(e){n(e !0)}) document.addEventListener("bbc-page-updated" function(){window.__reverb.__reverbLoadedPromise.then(function(e){e.initialise().then(function(){return e.viewEvent()})} function(){console.log("Reverb failed to load. Event not sent")})})}();


 if (document.getElementById("responsive-news")) { window.bbcNewsResponsive = true; } var isIE = (function() { var undef v = 3 div = document.createElement('div') all = div.getElementsByTagName('i'); while ( div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->' all[0] ); return v > 4 ? v : undef; }()); var modernDevice = 'querySelector' in document && 'localStorage' in window && 'addEventListener' in window forceCore = document.cookie.indexOf('ckps_force_core') !== -1; window.cutsTheMustard = modernDevice && !forceCore; if (window.cutsTheMustard) { document.documentElement.className += ' ctm'; var insertPoint = document.getElementById('news-loader') config = {"asset":{"asset_id":"26415021" "asset_locator":"urn:bbc:cps:asset:26415021" "asset_uri":"\/news\/technology-26415021" "original_asset_uri":null "first_created":{"date":"2014-03-03 07:36:59" "timezone_type":3 "timezone":"Europe\/London"} "first_published":{"date":"2014-03-03 10:22:55" "timezone_type":3 "timezone":"Europe\/London"} "last_updated":{"date":"2014-03-03 10:22:55" "timezone_type":3 "timezone":"Europe\/London"} "options":{"allowDateStamp":true "allowPrintingSharingLinks":true "allowHeadline":true "allowRightHandSide":true "allowRelatedStoriesBox":true "includeComments":false "allowAdvertising":true "isIgorSeoTagsEnabled":false} "section":{"name":"Technology" "id":"99113" "uri":"\/news\/technology" "urlIdentifier":"\/news\/technology"} "language":"en-gb" "edition":"International" "audience":null "iStats_counter_name":"news.technology.story.26415021.page" "type":"STY" "curie":"asset:52db3466-0acb-3a48-98c6-21a6e4f5f1cf" "length":5362 "byline":{"name":"By Mark Ward" "persons":{"0":{"name":"Mark Ward" "function":"Technology correspondent BBC News"}} "title":"Technology correspondent BBC News"} "headline":"An hour to catch the coding bug" "mediaType":null "topicTags":null} "smpBrand":null "staticHost":"https:\/\/static.bbc.co.uk" "environment":"live" "locatorVersion":"0.46.3" "pathPrefix":"\/news" "staticPrefix":"https:\/\/static.bbc.co.uk\/news\/1.303.03507" "jsPath":"https:\/\/static.bbc.co.uk\/news\/1.303.03507\/js" "cssPath":"https:\/\/static.bbc.co.uk\/news\/1.303.03507\/stylesheets\/services\/news" "cssPostfix":"" "dynamic":null "features":{"localnews":true "video":true "liveeventcomponent":true "mediaassetpage":true "gallery":true "sportstories":true "radiopromo":true "fromothernewssites":true "locallive":true "weather":true} "features2":{"apple_smart_banner":true "svg_brand":true "waf_deprecation_notice":true "local_news_cta":true "chartbeat":true "connected_stream":true "connected_stream_promo":true "dynatrace_beacon":true "nav":true "pulse_survey":false "local_survey":true "correspondents":true "blogs":true "open_graph":true "follow_us":true "marketdata_markets":true "marketdata_shares":true "nations_pseudo_nav":true "politics_election2015_topic_pages":true "responsive_breaking_news":true "live_event":true "most_popular":true "most_popular_tabs":true "routing":true "radiopromonownext":true "config_based_layout":true "orbit":true "map_most_watched":true "top_stories_promo":true "features_and_analysis":true "section_labels":true "index_title":true "share_tools":true "extracted_share_tools":true "local_live_promo":true "adverts":true "adverts_async":true "adexpert":true "igor_geo_redirect":true "igor_device_redirect":true "live":true "comscore_mmx":true "find_local_news":true "comments":true "comments_enhanced":true "browser_notify":true "stream_grid_promo":true "breaking_news":false "top_stories_max_volume":true "contact_form":true "channel_page":true "portlet_global_variants":true "suppress_lep_timezone":true "story_sticky_player":true "story_end_slate":true "story_smp_preview":true "embed_player_pid":true "cedexis":true "mpulse":true "story_single_column_layout":true "story_image_copyright_labels":true "ovp_resolve_primary_media_vpids":false "media_player":true "services_bar":true "live_v2_stream":true "ldp_tag_augmentation":true "map_related_topic_tags":true "olympics_tables":true "embedephant-social-embeds":true "interactive-social-embeds":true "social-embeds":true "amp_link":true "https_redirect":true "preload_fig":true "preconnect_oftused_domains":true "ati_analytics":true} "configuration":{"showtimestamp":"1" "showweather":"1" "showsport":"1" "showolympics":"1" "showfeaturemain":"1" "candyplatform":"EnhancedMobile" "showwatchlisten":"1" "showspecialreports":"" "videotopiccandyid":"" "showvideofeedsections":"1" "showstorytopstories":"" "showstoryfeaturesandanalysis":"1" "showstorymostpopular":"" "showgallery":"1" "cms":"cps" "channelpagecandyid":"10318089"} "pollingHost":"https:\/\/polling.bbc.co.uk" "service":"news" "locale":"en-GB" "locatorHost":null "locatorFlagPole":true "local":{"allowLocationLookup":true} "isWorldService":false "isChannelPage":false "languageVariant":"" "commentsHost":"https:\/\/www.bbc.co.uk" "search":null "comscoreAnalytics":null}; config.configuration['get'] = function (key) { return this[key.toLowerCase()]; }; var bootstrapUI=function(){var e=function(){if(navigator.userAgent.match(/(Android (2.0|2.1))|(Nokia)|(OSRE\/)|(Opera (Mini|Mobi))|(w(eb)?OSBrowser)|(UCWEB)|(Windows Phone)|(XBLWP)|(ZuneWP)/))return!1;if(navigator.userAgent.match(/MSIE 10.0/))return!0;var e t=document n=t.head||t.getElementsByTagName("head")[0] r=t.createElement("style") s=t.implementation||{hasFeature:function(){return!1}};r.type="text/css" n.insertBefore(r n.firstChild) e=r.sheet||r.styleSheet;var i=s.hasFeature("CSS2" "")?function(t){if(!e||!t)return!1;var n=!1;try{e.insertRule(t 0) n=!/unknown/i.test(e.cssRules[0].cssText) e.deleteRule(e.cssRules.length-1)}catch(r){}return n}:function(t){return e&&t?(e.cssText=t 0!==e.cssText.length&&!/unknown/i.test(e.cssText)&&0===e.cssText.replace(/\r+|\n+/g "").indexOf(t.split(" ")[0])):!1};return i('@font-face{ font-family:"font";src:"font.ttf"; }')}();e&&(document.getElementsByTagName("html")[0].className+=" ff") function(){var e=document.documentElement.style;("flexBasis"in e||"WebkitFlexBasis"in e||"msFlexBasis"in e)&&(document.documentElement.className+=" flex")}();var t n r s i a={} o=function(){var e=document.documentElement.clientWidth n=window.innerWidth r=n>1.5*e;t=r?e:n} u=function(e){var t=document.createElement("link");t.setAttribute("rel" "stylesheet") t.setAttribute("type" "text/css") t.setAttribute("href" n+e+r+".css") t.setAttribute("media" i[e]) s.parentNode.insertBefore(t s) delete i[e]} c=function(e n r){n&&!r&&t>=n&&u(e) r&&!n&&r>=t&&u(e) n&&r&&t>=n&&r>=t&&u(e)} l=function(e){if(a[e])return a[e];var t=e.match(/\(min\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/) n=e.match(/\(max\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/) r=t&&parseFloat(t[1])||null s=n&&parseFloat(n[1])||null;return a[e]=[r s] a[e]} f=function(){var e=0;for(var t in i)e++;return e} m=function(){f()||window.removeEventListener("resize" d !1);for(var e in i){var t=i[e] n=l(t);c(e n[0] n[1])}} d=function(){o() m()} h=function(e t){i=e n=t.path+("/"!==t.path.substr(-1)?"/":"") r=t.postfix s=t.insertBefore o() m() window.addEventListener("resize" d !1)};return{stylesheetLoaderInit:h}}(); var stylesheets = {"compact":"(max-width: 599px)" "tablet":"(min-width: 600px) and (max-width: 1007px)" "wide":"(min-width: 1008px)"}; bootstrapUI.stylesheetLoaderInit(stylesheets { path: 'https://static.bbc.co.uk/news/1.303.03507/stylesheets/services/news' postfix: '' insertBefore: insertPoint }); var loadRequire = function(){ var js_paths = {"jquery-1.9":"vendor\/jquery-1\/jquery" "jquery-1":"https:\/\/static.bbc.co.uk\/frameworks\/jquery\/0.4.1\/sharedmodules\/jquery-1.7.2" "demi-1":"https:\/\/static.bbc.co.uk\/frameworks\/demi\/0.10.1\/sharedmodules\/demi-1" "swfobject-2":"https:\/\/static.bbc.co.uk\/frameworks\/swfobject\/0.1.10\/sharedmodules\/swfobject-2" "jquery":"vendor\/jquery-2\/jquery.min" "domReady":"vendor\/require\/domReady" "translation":"module\/translations\/en-GB" "bump-3":"\/\/emp.bbci.co.uk\/emp\/bump-3\/bump-3"}; js_paths.navigation = 'module/nav/navManager'; require.config({ baseUrl: 'https://static.bbc.co.uk/news/1.303.03507/js' map: { 'vendor/locator': { 'module/bootstrap': 'vendor/locator/bootstrap' 'locator/stats': 'vendor/locator/stats' 'locator/locatorView': 'vendor/locator/locatorView' } } paths: js_paths waitSeconds: 30 }); define('config' function () { return config; }); require(["compiled\/all"] function() {
 require(['domReady'] function (domReady) { domReady(function () { require(["module\/dotcom\/handlerAdapter" "module\/stats\/statsSubscriberAdapter" "module\/alternativeJsStrategy\/controller" "module\/iconLoaderAdapter" "module\/polyfill\/location.origin" "module\/components\/breakingNewsAdapter" "module\/indexTitleAdaptor" "module\/navigation\/handlerAdaptor" "module\/noTouchDetectionForCss" "module\/components\/stickyPlayer\/mainAdapter" "module\/components\/responsiveImage" "module\/components\/timestampAdaptor" "module\/components\/twiteAdapter" "module\/tableScrollAdapter" "module\/userScrollAdapter" "module\/components\/mediaPlayer\/mainAdapter" "module\/endSlateAdaptor" "module\/components\/fauxBlockLink"] function() { require(["module\/strategiserAdaptor"]); }); }); }); });
 }; loadRequire(); } else { var l = document.createElement('link'); l.href = 'https://static.bbc.co.uk/news/1.303.03507/icons/generated/icons.fallback.css'; l.rel = 'stylesheet'; document.getElementsByTagName('head')[0].appendChild(l); }   /*<![CDATA[*/ bbcdotcom.init({adsToDisplay:['leaderboard' 'sponsor_section' 'mpu' 'infeed_news_story' 'outbrain_ar_5' 'outbrain_ar_7' 'outbrain_ar_8' 'outbrain_ar_9' 'native' 'mpu_bottom' 'adsense' 'inread'] asyncEnabled:true }); /*]]>*/  




 /*<![CDATA[*/ (function() { if (window.bbcdotcom && bbcdotcom.config.isActive('ads')) { googletag.cmd.push(function() { googletag.display('bbccom_interstitial'); }); } }()); /*]]>*//*<![CDATA[*/ (function() { var wallpaper; if (window.bbcdotcom && bbcdotcom.config.isActive('ads')) { if (bbcdotcom.config.isAsync()) { googletag.cmd.push(function() { googletag.display('bbccom_wallpaper'); }); } else if (typeof googletag !== "undefined" && typeof googletag.display === "function") { googletag.display("wallpaper"); } wallpaper = bbcdotcom.adverts.adRegister.getAd('wallpaper'); } }()); /*]]>*//*<![CDATA[*/ (function() { if (window.bbcdotcom && bbcdotcom.config.isActive('ads')) { document.write(unescape('%3Cscript id="gnlAdsEnabled" class="bbccom_display_none"%3E%3C/script%3E')); } if (window.bbcdotcom && bbcdotcom.config.isActive('analytics')) { document.write(unescape('%3Cscript id="gnlAnalyticsEnabled" class="bbccom_display_none"%3E%3C/script%3E')); } }()); /*]]>*//*<![CDATA[*/ (function() { window.bbcdotcom.bodyFirst = true; }()); /*]]>*/  HomepageAccessibility linksSkip to contentAccessibility HelpBBC Accountrequire(['idcta/statusbar'] function (statusbar) {new statusbar.Statusbar({id: 'idcta-statusbar' publiclyCacheable: true});});NotificationsHomeNewsSportWeatheriPlayerSoundsCBBCCBeebiesFoodBitesizeArtsTasterLocalTVRadioThreeMenuSearchSearch the BBCSearch the BBC 


 






News
 BBC News Navigation



Sections









Home




Video




World




UK




Business




Tech

selected 


Science




Stories




Entertainment & Arts




Health




World News TV




In Pictures




Reality Check




Newsbeat




Special Reports




Explainers




The Reporters




Have Your Say








 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('leaderboard' [1 2 3 4]);
 }
 })();
 /*]]>*/
 






Technology





 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('sponsor_section' [1 2 3 4]);
 }
 })();
 /*]]>*/
 



   

Technology





 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('sponsor_section' [1 2 3 4]);
 }
 })();
 /*]]>*/
 


   

An hour to catch the coding bug

By Mark Ward
Technology correspondent BBC News






3 March 2014












Share this with Facebook









Share this with Messenger









Share this with Twitter









Share this with Email









Share this with Facebook









Share this with WhatsApp









Share this with Messenger









Share this with Twitter




Share


Share this with
These are external links and will open in a new window




Email
Share this with Email





Facebook
Share this with Facebook





Messenger
Share this with Messenger





Messenger
Share this with Messenger





Twitter
Share this with Twitter





Pinterest
Share this with Pinterest





WhatsApp
Share this with WhatsApp





LinkedIn
Share this with LinkedIn



Copy this link

https://www.bbc.com/news/technology-26415021

Read more about sharing.
These are external links and will open in a new window

Close share panel








 







Image caption

 We did our Hour of Code on a lazy Sunday morning
 

Okay 60 minutes and counting. Here we go.I've got an hour to convince my kids that programming is for them.Well sort of.I'm putting my twin 10-year-old boys Toby and Callum through the Hour of Code - a campaign that seeks to ignite an interest in programming - the part we're doing using specially created web-based exercises. The campaign begun in the US has landed in the UK where it also coincides with government calls for as many children as possible to get coding.


 /**/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('mpu' [1 2 3]);
 }
 })();
 /**/
 

Programming is being pushed because in an ever more technological world it can only be a good thing to give people a peep into what goes on behind the touch screen cash point and website. The Hour of Code is supposed to be the start of that journey and I like many other parents feel it's one my children should be embarking on. I do feel like a clock somewhere is ticking and unless they get started with this essential skill they'll be left behind. "In the future kids are going to be doing programming " said Callum when I asked him why it was worth learning how to code. "We need to learn so we can do stuff with the computer otherwise it will be a blank page and never work."Zombie dance


Image copyright
Code.org


Image caption

 The coding exercises involve familiar characters such as the Angry Birds
 

It's the getting started for both parents and their offspring that the Hour is intended to help with. I'm probably like most parents in that I have no significant qualification in computer science. All I can offer my boys is a lifetime of tinkering backed up over the past 18 months with online courses in Python HTML CSS Javascript and the like. There's good precedents for the value of something like the Hour of Code. I've quizzed every chief technology officer (CTO) developer or IT worker I've met in the past couple of weeks about what got them started and every one knew exactly the moment they got it. Their eyes lit up as they talked about typing in code listings from magazines working through every Dos command or designing their own blocky 8-bit game characters.And finally at the back of my mind are all those statistics about the shortages of skilled IT staff and my hope that if this works then their future career options will be much wider than they would be without this skill.So no pressure then.Yesterday morning we gave it a go. I was keen for it to be fun rather than feel like school as there's nothing more likely to turn them off than for it to be sold as good for them. I think we struck the right note of informality - Cal did it in his onesie. It went OK no better than that. Pretty good. We worked through all the exercises getting angry birds to mash pigs and zombies to chomp sunflowers. The coding is done by dragging blocks representing different commands into a work area and building the blocks into a tower of coherent instructions.The block-building system is based on the Scratch programming language build by MIT's Mitch Resnick. The exercises start easy - just getting an angry bird to hop on to a pig. By the end we were using "If… else" statements and loops to help a zombie navigate a tricky maze to reach the sunflower.This went down well with Callum. "Cool! It's scanning for a path " he said as the zombie worked its way towards the hapless flower.Mistakes were made but we learned from them we debated over which way to make the birds and zombies turn and the time went really fast. Toby was surprised to find that this counted as programming."I thought coding was just a lot of people tapping in letter and numbers until they got it right " he said. Next stepsAnd yet I felt it was a bit too easy. I wanted to make the coding connection to real life more tangible. So as we had about 15 minutes of our Hour of Code left we went further.This time we used the MIT App Inventor to build a basic program that would run on the tablets they own. The app inventor uses the same "drag the block" method to build a program and following the instructions we had soon created an app that turned anything typed in text into speech. 


Image copyright
MIT


Image caption

 The App Inventor uses the same block dragging system as the Hour of Code exercises
 

We got it working on Cal's tablet and soon they were getting that gadget to call out lots of phrases. Almost inevitably as they are 10 years old a lot of these phrases involved the words "willy" and "bum". But they had a lot of fun with it and it brought home to them how straight-forward coding can be. In just over an hour they went from being pretty much novices to creating an Android app - a basic one that trades on the expertise of the people that built the coding tools but it was an accomplishment nonetheless.Did they catch the coding bug as a result? Maybe later in the day they were programming each other after one of their regular wrestling matches left Toby lying exhausted on the floor. Suddenly Cal called out commands such as "roll left" and Toby started obeying even to the point of crashing into the sofa when too many roll commands were given. Then Toby had his turn and did the same they even worked out that they had to compensate for the changes in left and right as they rolled. So I think that hour started something. Both with them and with me. Building that Android app made me realise that it is straight-forward. That my lack of formal qualifications do not matter as much as I thought. And maybe that's the point of the hour. Making people realise that it is not scary and difficult. You just have to find an hour and give it a try. You can even do it in your onesie.






 Share this story About sharing




Email




Facebook




Messenger




Messenger




Twitter




Pinterest




WhatsApp




LinkedIn





  More on this story        
 Video
 Computer coding taught in Estonian primary schools    8 January 2014            Year of Code - PR fiasco or vital mission?    12 February 2014            Are teachers ready for the coding revolution?    23 January 2014         

  Related Internet links         UK Hour of Code           MIT App Inventor           MIT Scratch        
The BBC is not responsible for the content of external Internet sites


 




 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('outbrain_ar_5' [1 2 3 4]);
 }
 })();
 /*]]>*/
 





 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('outbrain_ar_7' [1 2 3 4]);
 }
 })();
 /*]]>*/
 





 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('outbrain_ar_8' [1 2 3 4]);
 }
 })();
 /*]]>*/
 





 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('outbrain_ar_9' [3 4]);
 }
 })();
 /*]]>*/
 





Top Stories

US and Iranian men released in prisoner swap
Xiyue Wang was jailed in Iran in 2016 while Massoud Soleimani was arrested at a US airport last year.
7 December 2019


Oceans running out of oxygen say scientists
7 December 2019


Woman set on fire on way to rape hearing dies
7 December 2019





 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('mpu' [4]);
 }
 })();
 /*]]>*/
 




 
 Features
 









300 seconds at London Bridge










Divisive UK election campaign reaches climax










 Video




How US law professors teach impeachment





 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('infeed_news_story' [1 2 3 4 5]);
 }
 })();
 /*]]>*/
 










'I was addicted to exercise'










The climate phenomenon linking floods and bushfires










The struggle for justice for India's rape victims










 Video




'I bring explosions of colour to public spaces'










Five African music stars to look out for










A dangerous dive into a medieval mystery







 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('native' [1 2 3 4]);
 }
 })();
 /*]]>*/
 




 
 Elsewhere on the BBC












Lyrics quiz

 Have you been getting these songs wrong?

Full article Lyrics quiz











Feeling hot

 What happens to your body in extreme heat?

Full article Feeling hot








 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('mpu_bottom' [1 2 3 4]);
 }
 })();
 /*]]>*/
 





 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('outbrain_ar_9' [1 2]);
 }
 })();
 /*]]>*/
 





 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('adsense' [1 2 3 4]);
 }
 })();
 /*]]>*/
 





 /*<![CDATA[*/
 (function() {
 if (window.bbcdotcom && bbcdotcom.adverts && bbcdotcom.adverts.slotAsync) {
 bbcdotcom.adverts.slotAsync('inread' [1 2 3 4]);
 }
 })();
 /*]]>*/
 



   


Why you can trust BBC News

 


BBC News Navigation

Sections



Home




Video




World




World Home

Africa 

Asia 

Australia 

Europe 

Latin America 

Middle East 

US & Canada 






UK




UK Home

England 

N. Ireland 

Scotland 

Wales 

Election 2019 






Business




Business Home

Market Data 

Global Trade 

Companies 

Entrepreneurship 

Technology of Business 

Connected World 

Global Education 

Economy 






Tech

selected 


Science




Stories




Entertainment & Arts




Health




World News TV




In Pictures




Reality Check




Newsbeat




Special Reports




Explainers




The Reporters




Have Your Say








BBC News Services


On your mobile


On your connected tv


Get news alerts


Contact BBC News





 
Explore the BBCHomeNewsSportWeatheriPlayerSoundsCBBCCBeebiesFoodBitesizeArtsTasterLocalTVRadioThreewindow.orb.worldwideFooterlinks = '<li class="orb-footer-ads"><a href="https://advertising.bbcworldwide.com/">Advertise with us<'+'/a><'+'/li><li class="orb-footer-adchoices"><a href="https://www.bbc.com/usingthebbc/cookies/how-does-the-bbc-use-cookies-for-advertising/">Ad choices<'+'/a><'+'/li>'; Terms of UseAbout the BBCPrivacy PolicyCookiesAccessibility HelpParental GuidanceContact the BBCGet Personalised NewslettersCopyright © 2019 BBC. The BBC is not responsible for the content of external sites. Read about our approach to external linking. require(['orb/lib/_$'] function($) {
 $.ready(function() {
 initialiseFooter();
 });
 var scrollCheckTimer;
 var didScroll;
 var previousPosition = 0;
 var delta = 5;
 var PROMO_SHOW_BREAKPOINT = 1500;
 var pageLength = 0;
 function initialiseFooter() {
 // Suppress this feature on browsers we no longer test
 var myNav = navigator.userAgent.toLowerCase();
 var oldIE = (myNav.indexOf('msie') !== -1) && parseInt(myNav.split('msie')[1] 10) <= 10;
 if (!oldIE) {
 require(['orb/cookies'] function (bbccookies) {
 var disabledByCookie = (parseInt(bbccookies.get('ckns_nav_promofail')) || 0) >= 3;
 if (!disabledByCookie) {
 require(['orb/fig'] function (orbFig) {
 orbFig.load(function (fig) {
 if (fig.geo.isUK()) {
 setUpLazyLoading();
 }
 });
 });
 }
 });
 }
 }
 function setUpLazyLoading() {
 // offsetHeight is expensive to calculate only do it once.
 pageLength = Math.abs(document.body.offsetHeight);
 if (pageLength < getViewportHeight() + 300 || pageLength - getCurrentPosition() < PROMO_SHOW_BREAKPOINT) {
 loadPromo();
 } else {
 window.onscroll = function () {
 didScroll = true;
 };
 scrollCheckTimer = setInterval(function () {
 if (didScroll) {
 hasScrolled();
 didScroll = false;
 }
 } 250);
 }
 }
 function loadPromo() {
 clearInterval(scrollCheckTimer);
 require(['orb/async/_footerpromo'] function(promo) {
 promo.init('https://navpromo.api.bbci.co.uk' '');
 });
 }
 function getViewportHeight() {
 return window.innerHeight;
 }
 function getCurrentPosition() {
 return Math.abs(window.scrollY || document.body.scrollTop || document.documentElement.scrollTop);
 }
 function hasScrolled() {
 var currentPosition = getCurrentPosition();
 if (Math.abs(previousPosition - currentPosition) <= delta) {
 return;
 }
 if (currentPosition > previousPosition) {
 if ((pageLength - currentPosition) <= PROMO_SHOW_BREAKPOINT) {
 loadPromo();
 }
 }
 previousPosition = currentPosition;
 }
 })/*<![CDATA[*/
 require(['orb/nav'] function(nav) {
 window.bbcuser.isUKCombined().then(function(isUK) {
 if (isUK) {
 nav.loadJs('https://nav.files.bbci.co.uk/orbit/a07e26191aed6a8725358c88df999791/js/edr.min.js');
 }
 });
 });
 /*]]>*/require.config({
 paths: {
 "mybbc/templates": '//mybbc.files.bbci.co.uk/notification-ui/3.9.10/templates' 
 "mybbc/notifications": '//mybbc.files.bbci.co.uk/notification-ui/3.9.10/js'
 }
 });
 require(['mybbc/notifications/NotificationsMain' 'idcta/idcta-1'] function (NotificationsMain idcta) {
 var loadNotifications = function (isUK) {
 if (isUK) {
 window.bbcpage.loadCSS('//mybbc.files.bbci.co.uk/notification-ui/3.9.10/css/main.min.css').then(function() {
 NotificationsMain.run(idcta '//mybbc.files.bbci.co.uk/notification-ui/3.9.10/');
 });
 }
 };
 
 if (window.bbcuser && window.bbcuser.isUKCombined && typeof(window.bbcuser.isUKCombined) === 'function') {
 // Use new API from Orbit if available
 window.bbcuser.isUKCombined().then(function(isUK) {
 loadNotifications(isUK); 
 });
 } else {
 // Fallback to fig (ORB support)
 var orbFig = window.orb.fig;
 loadNotifications(orbFig.geo.isUK());
 }
 });/*<![CDATA[*/ if (window.bbcdotcom && window.bbcdotcom.analytics && bbcdotcom.config && !bbcdotcom.config.isSportApp() && !bbcdotcom.config.isReel()) { bbcdotcom.analytics.page(); } /*]]>*//*<![CDATA[*/ if (window.bbcdotcom && bbcdotcom.currencyProviders) { bbcdotcom.currencyProviders.write(); } /*]]>*//*<![CDATA[*/ if (window.bbcdotcom && bbcdotcom.currencyProviders) { bbcdotcom.currencyProviders.postWrite(); } /*]]>*//*<![CDATA[*/ if (window.bbcdotcom && bbcdotcom.data && bbcdotcom.data.stats && bbcdotcom.data.stats === 1 && bbcdotcom.utils && window.location.pathname === '/') { var wwhpEdition = bbcdotcom.utils.getMetaPropertyContent('wwhp-edition'); var _sf_async_config={}; /** CONFIGURATION START **/ _sf_async_config.uid = 50924; _sf_async_config.domain = "bbc.co.uk"; _sf_async_config.title = "Homepage"+(wwhpEdition !== '' ? ' - '+wwhpEdition : ''); _sf_async_config.sections = "Homepage"+(wwhpEdition !== '' ? ' Homepage - '+wwhpEdition : ''); _sf_async_config.region = wwhpEdition; _sf_async_config.path = "/"+(wwhpEdition !== '' ? '?'+wwhpEdition : ''); /** CONFIGURATION END **/ (function(){ function loadChartbeat() { window._sf_endpt=(new Date()).getTime(); var e = document.createElement("script"); e.setAttribute("language" "javascript"); e.setAttribute("type" "text/javascript"); e.setAttribute('src' '//static.chartbeat.com/js/chartbeat.js'); document.body.appendChild(e); } var oldonload = window.onload; window.onload = (typeof window.onload != "function") ? loadChartbeat : function() { oldonload(); loadChartbeat(); }; })(); } /*]]>*//*<![CDATA[*/ (function() { window.bbcdotcom.bodyLast = true; }()); /*]]>*/if (window.SEARCHBOX.suppress === false && window.SEARCHBOX.locale && /^en-?.*?/.test(window.SEARCHBOX.locale)) {
 require.config({
 paths: {
 "search/searchbox": window.SEARCHBOX.searchboxAppStaticPrefix 
 }
 });
 if (bbcuser && bbcuser.isUKCombined) {
 bbcuser.isUKCombined().then(function (isUK) {
 if (isUK) {
 require(['search/searchbox/searchboxDrawer'] function (SearchboxDrawer) {
 SearchboxDrawer.run(window.SEARCHBOX);
 });
 }
 });
 }
 } window.COOKIES_STATIC_HOST = 'https://nav.files.bbci.co.uk/orbit-webmodules/0.0.2-398.6553dba/cookie-banner/cookie-prompt/';require(["istats-1" "orb/cookies"] function(o t){if(t.isAllowed("s1"))try{if(!require.s.contexts._.config.paths.idcta)return void i();require(["idcta/idcta-1"] function(t){t&&"function"==typeof t.getIStatsLabels&&o.addLabels(t.getIStatsLabels()) i()} function(t){throw t})}catch(t){console&&"function"==typeof console.log&&console.log("an exception occurred while adding idcta labels to istats invoking istats without them" t) i()}function i(){o.invoke()}});"use strict";window.__reverb.__reverbLoadedPromise.then(function(e){return e.initialise().then(function(){return e.viewEvent()})} function(){console.log("Failed to load reverb. No event sent")});   window.old_onload = window.onload; window.onload = function() { if(window.old_onload) { window.old_onload(); } window.loaded = true; };  

 /** CONFIGURATION START **/
 var _sf_async_config = {};
 _sf_async_config.uid = "50924";
 _sf_async_config.domain = "www.bbc.co.uk";
 _sf_async_config.sections = "News News - technology News - STY News - technology - STY News - unknown";
 <!-- if page is an index add the edition to the path -->
 _sf_async_config.path = "bbc.co.uk/news/technology-26415021";
 (function() {
 var cookiePrefix = 'ckns_sylphid';
 _sf_async_config.idSync = _sf_async_config.idSync || {};
 if (document.cookie.indexOf(cookiePrefix) !== -1) {
 var cookieSplit = document.cookie.split(';');
 var cookieLength = cookieSplit.length;
 while (cookieLength--) {
 var cookie = cookieSplit[cookieLength].replace(/^\s+|\s+$/g '');
 var cookieName = cookie.split('=')[0];
 if (cookieName.indexOf(cookiePrefix) === 0) {
 _sf_async_config.idSync.bbc_hid = cookieSplit[cookieLength].split('=')[1];
 break;
 }
 }
 }
 }());
 /** CONFIGURATION END **/
 (function(){
 function loadChartbeat() {
 window._sf_endpt=(new Date()).getTime();
 var e = document.createElement("script");
 e.setAttribute("language" "javascript");
 e.setAttribute("type" "text/javascript");
 e.setAttribute('src' '//static.chartbeat.com/js/chartbeat.js');
 document.body.appendChild(e);
 }
 var oldonload = window.onload;
 window.onload = (typeof window.onload != "function") ?
 loadChartbeat : function() { oldonload(); loadChartbeat(); };
 }());




(function(){
 window.bbcnewsperformance = {};
 var perf = window.performance;
 function firstScrollTimer() {
 document.removeEventListener('scroll' firstScrollTimer);
 perf.mark('firstScroll');
 perf.measure('scrolltime' 'firstScroll');
 var timing = perf.getEntriesByName('scrolltime');
 bbcnewsperformance.firstScrollTime = timing[0].startTime;
 }
 if (perf && perf.mark && perf.measure) {
 document.addEventListener('scroll' firstScrollTimer);
 }
 var random = Math.random();
 var rate = 0.25;
 var throttle = 0.02;
 var forceMpulse = window.location.href.match(/force_mpulse/);
 if (rate && throttle && (random < (rate * throttle)) || forceMpulse) {
 if(window.BOOMR && window.BOOMR.version){return;}
 var dom doc where iframe = document.createElement('iframe') win = window;
 function boomerangSaveLoadTime(e) {
 win.BOOMR_onload=(e && e.timeStamp) || new Date().getTime();
 }
 if (win.addEventListener) {
 win.addEventListener("load" boomerangSaveLoadTime false);
 } else if (win.attachEvent) {
 win.attachEvent("onload" boomerangSaveLoadTime);
 }
 iframe.src = "javascript:false";
 iframe.title = ""; iframe.role="presentation";
 (iframe.frameElement || iframe).style.cssText = "width:0;height:0;border:0;display:none;";
 where = document.getElementsByTagName('script')[0];
 where.parentNode.insertBefore(iframe where);
 try {
 doc = iframe.contentWindow.document;
 } catch(e) {
 dom = document.domain;
 iframe.src="javascript:var d=document.open();d.domain='"+dom+"';void(0);";
 doc = iframe.contentWindow.document;
 }
 doc.open()._l = function() {
 var js = this.createElement("script");
 if(dom) this.domain = dom;
 js.id = "boomr-if-as";
 js.src = '//c.go-mpulse.net/boomerang/' +
 '86ZLR-T78UG-6FNFN-UVDPZ-VZFWR';
 BOOMR_lstart=new Date().getTime();
 this.body.appendChild(js);
 };
 doc.write('<body onload="document._l();">');
 doc.close();
 }
})();


 

We got rid of the HTML tags, but we still have lots of "non text" - mainly javascript code. We can still use beautifulsoup to navigate the HTML DOM structure and filter out the script blocks - this will be effective in this case.

But we can go faster and use the justext library. This is developed specifically to remove boilerplate from html strings. It uses a very nice machine learning algorithm which is documented in its homepage.

Make sure you install the library first:

% pip install justext

Now let's try it:

In [11]:
! pip install justext
Collecting justext
  Downloading https://files.pythonhosted.org/packages/6c/5f/c7b909b4b864ebcacfac23ce2f6f01a50c53628787cc14b3c06f79464cab/jusText-2.2.0-py2.py3-none-any.whl (860kB)
Collecting lxml>=2.2.4
  Downloading https://files.pythonhosted.org/packages/aa/17/b9ccbdd50f66258d362561dbfe3cf4aaa60c82c4bba0302b3f52ab730b99/lxml-4.4.2-cp37-cp37m-win_amd64.whl (3.7MB)
Installing collected packages: lxml, justext
Successfully installed justext-2.2.0 lxml-4.4.2
In [12]:
import justext

def clean_html2(html):
    paragraphs = justext.justext(html, justext.get_stoplist('English'))
    return "\n".join([p.text for p in paragraphs if not p.is_boilerplate])

Let us try this second version of clean_html:

In [13]:
print(clean_html2(html))
I'm putting my twin 10-year-old boys Toby and Callum through the Hour of Code - a campaign that seeks to ignite an interest in programming - the part we're doing using specially created web-based exercises.
The campaign begun in the US has landed in the UK where it also coincides with government calls for as many children as possible to get coding.
Programming is being pushed because in an ever more technological world it can only be a good thing to give people a peep into what goes on behind the touch screen cash point and website.
The Hour of Code is supposed to be the start of that journey and I like many other parents feel it's one my children should be embarking on. I do feel like a clock somewhere is ticking and unless they get started with this essential skill they'll be left behind.
"In the future kids are going to be doing programming " said Callum when I asked him why it was worth learning how to code. "We need to learn so we can do stuff with the computer otherwise it will be a blank page and never work."
Zombie dance
It's the getting started for both parents and their offspring that the Hour is intended to help with. I'm probably like most parents in that I have no significant qualification in computer science. All I can offer my boys is a lifetime of tinkering backed up over the past 18 months with online courses in Python HTML CSS Javascript and the like.
There's good precedents for the value of something like the Hour of Code. I've quizzed every chief technology officer (CTO) developer or IT worker I've met in the past couple of weeks about what got them started and every one knew exactly the moment they got it. Their eyes lit up as they talked about typing in code listings from magazines working through every Dos command or designing their own blocky 8-bit game characters.
And finally at the back of my mind are all those statistics about the shortages of skilled IT staff and my hope that if this works then their future career options will be much wider than they would be without this skill.
So no pressure then.
Yesterday morning we gave it a go. I was keen for it to be fun rather than feel like school as there's nothing more likely to turn them off than for it to be sold as good for them. I think we struck the right note of informality - Cal did it in his onesie.
It went OK no better than that. Pretty good. We worked through all the exercises getting angry birds to mash pigs and zombies to chomp sunflowers. The coding is done by dragging blocks representing different commands into a work area and building the blocks into a tower of coherent instructions.
The block-building system is based on the Scratch programming language build by MIT's Mitch Resnick.
The exercises start easy - just getting an angry bird to hop on to a pig. By the end we were using "If… else" statements and loops to help a zombie navigate a tricky maze to reach the sunflower.
This went down well with Callum. "Cool! It's scanning for a path " he said as the zombie worked its way towards the hapless flower.
Mistakes were made but we learned from them we debated over which way to make the birds and zombies turn and the time went really fast.
Toby was surprised to find that this counted as programming.
"I thought coding was just a lot of people tapping in letter and numbers until they got it right " he said.
Next steps
And yet I felt it was a bit too easy. I wanted to make the coding connection to real life more tangible. So as we had about 15 minutes of our Hour of Code left we went further.
This time we used the MIT App Inventor to build a basic program that would run on the tablets they own.
The app inventor uses the same "drag the block" method to build a program and following the instructions we had soon created an app that turned anything typed in text into speech.
Image copyrightMITImage caption
The App Inventor uses the same block dragging system as the Hour of Code exercises
We got it working on Cal's tablet and soon they were getting that gadget to call out lots of phrases. Almost inevitably as they are 10 years old a lot of these phrases involved the words "willy" and "bum".
But they had a lot of fun with it and it brought home to them how straight-forward coding can be. In just over an hour they went from being pretty much novices to creating an Android app - a basic one that trades on the expertise of the people that built the coding tools but it was an accomplishment nonetheless.
Did they catch the coding bug as a result?
Maybe later in the day they were programming each other after one of their regular wrestling matches left Toby lying exhausted on the floor. Suddenly Cal called out commands such as "roll left" and Toby started obeying even to the point of crashing into the sofa when too many roll commands were given.
Then Toby had his turn and did the same they even worked out that they had to compensate for the changes in left and right as they rolled.
So I think that hour started something. Both with them and with me. Building that Android app made me realise that it is straight-forward. That my lack of formal qualifications do not matter as much as I thought. And maybe that's the point of the hour. Making people realise that it is not scary and difficult. You just have to find an hour and give it a try. You can even do it in your onesie.

Tokenizing

Now that we have clean text, let us tokenize it into a list of words.

We will use nltk tokenizer to do this. Make sure you have nltk installed, and that you invoke nltk.download() to download the datasets that come with it.

Then let us try the tokenizer.

In [14]:
import nltk

tokens = nltk.word_tokenize(clean_html2(html))

print("We found %s tokens" % (len(tokens)))
We found 1079 tokens

The output of justext is organized in paragraphs. We converted them as one line of text each.

In [15]:
paragraphs = clean_html2(html).split("\n")
p0 = paragraphs[0]
print(nltk.word_tokenize(p0))
['I', "'m", 'putting', 'my', 'twin', '10-year-old', 'boys', 'Toby', 'and', 'Callum', 'through', 'the', 'Hour', 'of', 'Code', '-', 'a', 'campaign', 'that', 'seeks', 'to', 'ignite', 'an', 'interest', 'in', 'programming', '-', 'the', 'part', 'we', "'re", 'doing', 'using', 'specially', 'created', 'web-based', 'exercises', '.']

Note how abbreviations in English are tokenized ("I'm" becomes ["I", "'m"]).

In [ ]: