We have around 300+ games, some of which are distributed via our five mobile apps on iOS and Android and others are embedded across www.bbc.co.uk.
Newsround is one of the key propositions within BBC Children’s as a go-to news service for children.
Over the past 6 months we’ve transitioned Newsround away from a legacy, on-premise technical stack over to a serverless, cloud based infrastructure.
In this post I’m going to talk about the technical strategy behind migrating Newsround to the cloud and how we maximised re-use, reduced duplication, fostered collaboration, and shipped an entire product on a serverless platform from the ground up.
For the past 3 years Newsround has been operating as a site hosted on our World Service platform, a part of BBC Online which delivers news for 29 different languages. …
Asymptotic notation is a set of languages which allow us to express the performance of our algorithms in relation to their input.
There are three main notations for expressing the performance of algorithms, put simply they are:
In this post I’m going to focus on how we can prove Big-O — as we often want to plan for the worst case running time of software, rather than the best.
Lets take the following Python example which takes an array, iterates over it and prints each value of that…
Let’s talk about some of the internals of git and how it stores and tracks objects within the .git directory.
If you’re unaware of what the .git directory is, it’s simply a space that git uses to store your repositories data, the directory is created when you run git init. Information such as binary objects and plain text files for commits and commit data, remote server information and information about branch locations are stored within.
The key concept throughout this entire article is very simple — pretty much every operation you do in git creates objects with a bunch of metadata which point to some more objects with a bunch of metadata and so on so for forth. …
Web optimisation is important; it’s how we make our websites fast — which in turn keeps our users happy and helps us to maintain a good SEO profile.
The way in which we build and optimise websites is driven by the foundation of data communication across the web: HTTP — the Hyper Text Transfer Protocol.
The first documented version of HTTP was HTTP/0.9 dated back to 1991. We’re now 25 years on and HTTP/2 is here. Nearly all major browsers support it and have done for some time.
In this article let’s talk about the state of web optimisation, the limitations which drive today’s web development workflow and how HTTP/2 can help remove those limitations and simplify our toolchain. …
Let’s take a crash course on how we can build HTTP/2 ready applications in Node.js.
Firstly, many clients and browsers are not planning on implementing the ability to use HTTP/2 over plain-text, even though this is in the protocols specification. This notion comes as a wider community effort to move towards a more secure and encrypted internet by default.
For us however, this means if we intend on using HTTP/2 in production, we must supply a valid TLS certificate!
If you wish to use a valid TLS certificate which is signed by an authority and not self signed, I recommend Let’s Encrypt, a free, automated and open certificate authority! …
Web servers supporting HTTP/2 can take advantage of a couple new features introduced as part of the new specification designed to improve how we deliver content over HTTP, and as a result, significantly improve the end user experience of our applications!
This article is based of H2O, a modern and fast HTTP/2 & HTTP/1 web server.
The main two features I’m going to cover here are Prioritisation and Cache-Aware Server-Push.
HTTP/2 is very different in implementation and design to that of HTTP/1.
HTTP/2 is a binary protocol which uses streams and frames in order to exchange data, every request made to a HTTP/2 server will open up a new stream for each message sent back to the client, these streams are split up into multiple frames which have attributes associated with them. Attributes such as: parent streams, data, headers, weight, push_promise and more, check out the official specification for more in depth detail on streams and frames. …
Moving directories is easy, on any command line flavour, it’s hardly the most complex command. The real trick is remembering where that all important directory is you need to get back to when you’ve moved up, down and sideways in your file system!
Have no fear, pushd and popd are here! Yep, command line directory systems have stacks too (obviously).
If you’re not familiar with what a stack is, or how it works, it’s simply a data structure, like a stack of plates. You place a plate on top of the stack, you take the plate off the stack, you can get to the next plate, so and and so forth. …
I recently came across the article Web vs. native: let’s concede defeat and it got me thinking.
Here is my opinion on the Native vs Web argument.
Building applications cross-platforms is hard. Not only from a UX perspective, but from a technical and business one too. Each and every project stakeholder in a digital applications lifecycle have concerns ranging from usability, the cost of development to production, platform reach and even device constraints.
The landscape in which we consume content is forever changing too. From phablets to e-readers, we need better, more efficient and cost effective ways to distribute our content across the globe to potentially hundreds of different devices and millions of consumers. …
Microservices architectures have taken off dramatically over the recent years and newly emerging technologies such as CoreOS, Docker, Mesophere and Digital Ocean are making it easier than ever before to build highly available, fault tolerant and scalable enterprise ready applications on the fly.
This article is aimed at those who have heard the terms microservices and containers mentioned about the office but are overwhelmed by the vast amount of whitepapers out there by companies such as Netflix. …