SlideShare una empresa de Scribd logo
1 de 30
YouView
Developer
Support &
Challenges
DTG HTML5 workshop, London, 03/07/2015
Who Are We?
Content Development & Innovation Team
Ian Renyard
Senior Technologist
Andrea Fassina
Technologist
YouView Developer Support &
Challenges
● Overview
● Development on Production Devices
● Libraries & Frameworks
● Fast Start
● Questions
What is YouView?
What is YouView?
YouView & HTML5
● 2012 - Adobe Air for TV.
● 2014 - HTML5, with BBC
iPlayer, Red Button &
Arqiva.
● Currently working to migrate
more to HTML…
Production
Development
Tools
Run development HTML apps on production
devices
Why
● Greater availability.
● Lower cost to entry.
● Don’t need to support multiple content
environments, test dev on live.
Development Process
Contact YouView
content operations
team and complete
the on boarding
process*
Receive access to
developer portal,
Developer signing
credentials and
developer tools
Develop and
deploy to a
production device
*(Ts&Cs may apply)
Local Application Environment
Local Application Environment
- Device DNS
points to Hosting
server IP.
- Developer mode
enabled on the
device.
- Local PC hosts signed
application that can be
launched, replicating YouView
metadata environment locally.
Libraries and
Frameworks
Popular JS frameworks/libraries tested.
Libraries and Frameworks
Test strategy:
● simple text application
● first generation device
● limited number of test iterations
● test for application loading time
● and memory consumption
Libraries and Frameworks
Tested JS frameworks for memory consumption and
loading time:
Libraries and Frameworks
Libraries and Frameworks
Results
Results
_.js
underscore.js which loaded in 7ms consuming
about 3mb of memory.
Fast Start
Reducing the time to playback
Areas to Optimise
App Bootstrapping
LCD Test Bench by xunil96 (CC BY-SA)
Download Weight
The Computing Scale Co by Kenny Louie (CC BY)
Network Requests
Switchboard by christopher_brown (CC BY)
Launch Contexts
Players Apps
Deep Linking Red Button
Modules & Bundles
Small Parts by Windell Oskay (CC BY)
Modules & Bundles
Framework
Routing
Playback
Controller
Playback
Model
Playback
View
Framework
&
Routing
Playback
MVC
Modules Bundles
Home
MVC
Forward
Journeys
Playback
Controls
Loading Order
Framework &
Routing
Playback
MVC
Video Asset
Time
Playback
Starts
Loading Order
Framework &
Routing
Playback
MVC
Video Asset
Time
Playback
Starts
Playback
Controls
Forward
Journeys
Home
MVC
Results
Original Optimised
Results
2xFaster
Build Tools
● AMD Modules
Gulp Plugins:
● concat
● UglifyJS
● usemin
Best Practices
For resource constrained (T1000 < iPhone 3)
devices:
● Lazy loading
● Microservices/libraries
● Sprite sheets
● CSS translation and requestAnimationFrame
● Thinner UI client/server side templating
Contact
Ian Renyard
Senior Technologist
ian.renyard@youview.com
www.renyard.co.uk
github.com/renyard
@renyard
Andrea Fassina
Technologist
andrea.fassina@youview.com
www.walkabout.xyz
github.com/andrea-f
@walkabout_xyz
YouView
www.youview.co.uk
@youview
Want to work with us?
Speak to us about jobs at YouView or log on to www.youview.com/jobs.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Designing and Debugging Mobile Apps with an Embedded, Scriptable Web Server
Designing and Debugging Mobile Apps with an Embedded, Scriptable Web ServerDesigning and Debugging Mobile Apps with an Embedded, Scriptable Web Server
Designing and Debugging Mobile Apps with an Embedded, Scriptable Web Server
 
Jun Heider - Flex Application Profiling By Example
Jun Heider - Flex Application Profiling By ExampleJun Heider - Flex Application Profiling By Example
Jun Heider - Flex Application Profiling By Example
 
Serenity BDD Workshop - 9th March 2016
Serenity BDD Workshop - 9th March 2016Serenity BDD Workshop - 9th March 2016
Serenity BDD Workshop - 9th March 2016
 
Docker в автоматизации тестирования
Docker в автоматизации тестированияDocker в автоматизации тестирования
Docker в автоматизации тестирования
 
Continuous integration / continuous delivery of web applications, Eugen Kuzmi...
Continuous integration / continuous delivery of web applications, Eugen Kuzmi...Continuous integration / continuous delivery of web applications, Eugen Kuzmi...
Continuous integration / continuous delivery of web applications, Eugen Kuzmi...
 
Continuous Integration/ Continuous Delivery of web applications
Continuous Integration/ Continuous Delivery of web applicationsContinuous Integration/ Continuous Delivery of web applications
Continuous Integration/ Continuous Delivery of web applications
 
Docker Jenkins Pipeline Tutorial | Microservices Using Docker & Jenkins | Dev...
Docker Jenkins Pipeline Tutorial | Microservices Using Docker & Jenkins | Dev...Docker Jenkins Pipeline Tutorial | Microservices Using Docker & Jenkins | Dev...
Docker Jenkins Pipeline Tutorial | Microservices Using Docker & Jenkins | Dev...
 
LONDON SDET MEETUP - Difference between Selenium and Cypress presentation
LONDON SDET MEETUP - Difference between Selenium and Cypress presentationLONDON SDET MEETUP - Difference between Selenium and Cypress presentation
LONDON SDET MEETUP - Difference between Selenium and Cypress presentation
 
Continuous Delivery with Jenkins: the Good, the Bad and the Ugly - JAX DevOps...
Continuous Delivery with Jenkins: the Good, the Bad and the Ugly - JAX DevOps...Continuous Delivery with Jenkins: the Good, the Bad and the Ugly - JAX DevOps...
Continuous Delivery with Jenkins: the Good, the Bad and the Ugly - JAX DevOps...
 
Test driven development_continuous_integration
Test driven development_continuous_integrationTest driven development_continuous_integration
Test driven development_continuous_integration
 
Javascript Frameworks (and How to Learn Them)
Javascript Frameworks (and How to Learn Them)Javascript Frameworks (and How to Learn Them)
Javascript Frameworks (and How to Learn Them)
 
Build your first DApp using Substrate Framework - Part I
Build your first DApp using Substrate Framework - Part IBuild your first DApp using Substrate Framework - Part I
Build your first DApp using Substrate Framework - Part I
 
Prod-Like Integration Testing for Distributed Containerized Applications
Prod-Like Integration Testing for Distributed Containerized ApplicationsProd-Like Integration Testing for Distributed Containerized Applications
Prod-Like Integration Testing for Distributed Containerized Applications
 
Continuous integration / continuous delivery
Continuous integration / continuous deliveryContinuous integration / continuous delivery
Continuous integration / continuous delivery
 
What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...
What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...
What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...
 
Alexey Kupriyanenko "Release Early, Often, Stable"
Alexey Kupriyanenko "Release Early, Often, Stable"Alexey Kupriyanenko "Release Early, Often, Stable"
Alexey Kupriyanenko "Release Early, Often, Stable"
 
Automated Testing with Cucumber, PhantomJS and Selenium
Automated Testing with Cucumber, PhantomJS and SeleniumAutomated Testing with Cucumber, PhantomJS and Selenium
Automated Testing with Cucumber, PhantomJS and Selenium
 
BDD WITH CUCUMBER AND JAVA
BDD WITH CUCUMBER AND JAVABDD WITH CUCUMBER AND JAVA
BDD WITH CUCUMBER AND JAVA
 
Component testing with cypress
Component testing with cypressComponent testing with cypress
Component testing with cypress
 
Gherkin /BDD intro
Gherkin /BDD introGherkin /BDD intro
Gherkin /BDD intro
 

Similar a Arm html5 presentation

FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
WSPDC & FEDSPUG
 

Similar a Arm html5 presentation (20)

FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
 
Where should I run my code? Serverless, Containers, Virtual Machines and more
Where should I run my code? Serverless, Containers, Virtual Machines and moreWhere should I run my code? Serverless, Containers, Virtual Machines and more
Where should I run my code? Serverless, Containers, Virtual Machines and more
 
Enterprise-Grade DevOps Solutions for a Start Up Budget
Enterprise-Grade DevOps Solutions for a Start Up BudgetEnterprise-Grade DevOps Solutions for a Start Up Budget
Enterprise-Grade DevOps Solutions for a Start Up Budget
 
ShowNTell: An easy-to-use tool for answering students’ questions with voice-o...
ShowNTell: An easy-to-use tool for answering students’ questions with voice-o...ShowNTell: An easy-to-use tool for answering students’ questions with voice-o...
ShowNTell: An easy-to-use tool for answering students’ questions with voice-o...
 
DevOps in an Embedded World
DevOps in an Embedded WorldDevOps in an Embedded World
DevOps in an Embedded World
 
WSO2Con EU 2015: Keynote - The Containerization of the Developer Workspace
WSO2Con EU 2015: Keynote - The Containerization of the Developer WorkspaceWSO2Con EU 2015: Keynote - The Containerization of the Developer Workspace
WSO2Con EU 2015: Keynote - The Containerization of the Developer Workspace
 
Selenium
SeleniumSelenium
Selenium
 
1 Win7 For Devs Fund Search
1 Win7 For Devs Fund Search1 Win7 For Devs Fund Search
1 Win7 For Devs Fund Search
 
TDD with BizTalk
TDD with BizTalkTDD with BizTalk
TDD with BizTalk
 
Azure based development for SharePoint 2013
Azure based development for SharePoint 2013Azure based development for SharePoint 2013
Azure based development for SharePoint 2013
 
Serverless java
Serverless   javaServerless   java
Serverless java
 
DockerCon Europe 2018 Monitoring & Logging Workshop
DockerCon Europe 2018 Monitoring & Logging WorkshopDockerCon Europe 2018 Monitoring & Logging Workshop
DockerCon Europe 2018 Monitoring & Logging Workshop
 
HTML5 Comprehensive Guide
HTML5 Comprehensive GuideHTML5 Comprehensive Guide
HTML5 Comprehensive Guide
 
Announcing AWS CodeBuild - January 2017 Online Teck Talks
Announcing AWS CodeBuild - January 2017 Online Teck TalksAnnouncing AWS CodeBuild - January 2017 Online Teck Talks
Announcing AWS CodeBuild - January 2017 Online Teck Talks
 
SRV312 DevOps on AWS: Building Systems to Deliver Faster
SRV312 DevOps on AWS: Building Systems to Deliver FasterSRV312 DevOps on AWS: Building Systems to Deliver Faster
SRV312 DevOps on AWS: Building Systems to Deliver Faster
 
A Tale of Two Pizzas: Accelerating Software Delivery with AWS Developer Tools
A Tale of Two Pizzas: Accelerating Software Delivery with AWS Developer ToolsA Tale of Two Pizzas: Accelerating Software Delivery with AWS Developer Tools
A Tale of Two Pizzas: Accelerating Software Delivery with AWS Developer Tools
 
AWS Summit Auckland - Application Delivery Patterns for Developers
AWS Summit Auckland - Application Delivery Patterns for DevelopersAWS Summit Auckland - Application Delivery Patterns for Developers
AWS Summit Auckland - Application Delivery Patterns for Developers
 
Application Lifecycle Management
Application Lifecycle ManagementApplication Lifecycle Management
Application Lifecycle Management
 
Cincom Smalltalk: Present, Future & Smalltalk Advocacy
Cincom Smalltalk: Present, Future & Smalltalk AdvocacyCincom Smalltalk: Present, Future & Smalltalk Advocacy
Cincom Smalltalk: Present, Future & Smalltalk Advocacy
 
DevOps CTO Masterclass | Webinar Oct. 2020
DevOps CTO Masterclass | Webinar Oct. 2020DevOps CTO Masterclass | Webinar Oct. 2020
DevOps CTO Masterclass | Webinar Oct. 2020
 

Arm html5 presentation

Notas del editor

  1. Worked around performance of HTML apps and with the BBC recently to improve performance of their apps on YouView devices. Involved with the Sony project to bring YouView to their 2015 Bravia models.
  2. Today, we’re going to talk about how we are lowering the barriers to entry by enabling development on production devices and a couple of areas around the performance of HTML apps on YouView boxes.
  3. YouView is an on demand TV service with over 70 live free-to-air digital TV and radio channels.
  4. We work with most of the major broadcasters and on demand services in the UK.
  5. Where are we with HTML5? YouView launched in 2012 with apps based on Adobe Air for TV. Last autumn we launched HTML apps with 2 content providers. We’re actively working with our other content providers to migrate their apps from Air to HTML.
  6. Historically, development boxes have been used for app development. But these only being available in limited numbers and more content providers coming onboard, this is less practical. Rather than having to request boxes from YouView, they can be purchased in Currys or John Lewis.
  7. Boxes are available at Currys & John Lewis and cheaper than development boxes. Do not need to request from YouView. No need to deploy app packages signed for two different environments.
  8. DUID - Device Unique ID. C5D development production certificate
  9. Most used libraries/frameworks, investigated these specific ones because these are the most widely used across content providers
  10. Due to the time to perform testing of this kind the results are based on a simple application over a limited number of test iterations
  11. add logos instead of names for different frameworks
  12. point out that the loading time of frameworks with dependencies is the net time, so not including the time required to load jquery
  13. User experience is really important and the user wants to get to content, so we need to keep our launch time as fast as possible. We’ve investigated approaches to reducing loading times for apps and I’m going to run through some of our findings.
  14. Some time will be taken up in loading WebKit. This is something we’re working on improving, but we’re going to focus on what’s within the control of the app itself to optimise here. Remote HTTP requests to the network. Download weight of the code base. Execution of initialisation code for the app. These apply to any web apps, but are particularly pronounced on devices which have more constrained resources like a set top box.
  15. Apps on YouView can be launched from several different contexts: Players - Long form and scheduled catch up content. Apps - Short form video or other non-scheduled content. Deep Linking - Usually launching straight into a piece of content, but could be another area of the app. Red Button - Launched from a linear channel. If our one app covers all these areas, how do we make sure we can get into the required context as quickly as possible?
  16. We found that taking a modular approach to app architecture gave us good results.
  17. Functionality is organised into modules with small discrete functionality. Related modules are then concatenated together into bundle files which will be loaded together. This shows the framework and playback functionality, but there will be several more within the app.
  18. These modules & bundles can be used to optimise the loading order of your app, determining the next step at each stage. In this diagram, each column is loaded in sequence, with each step determining the requirements for the next. The framework & routing determines which modules will be required for the required context. The Playback module loads with it’s dependencies. The video asset is buffered. At this point playback can start and we can start to anticipate what the user might want to do next and lazy load further functionality.
  19. In the playback example, this could include any functionality that we’d like to defer until after playback has started. For example, transport and scrub bar functionality and any forward journeys are unlikely to be needed until after the video has started playing. Other areas of the app can also be loaded here to speed up navigation into those. This could include a home screen, category menus and search functionality.
  20. We built a basic app to test these approaches against an app based on an off the shelf framework. The original app is on the left and our optimised app is on the right. After loading now screen disappears, the control is with the app itself.
  21. Over multiple tests on our first generation YouView hardware, we saw app load times to be up to twice as fast with these optimisations. 8 seconds -> 3.5 seconds. On newer, more powerful hardware, the launch time is even faster.
  22. So what tools have we used to achieve this? None of this uses any YouView specific magic, so these approaches can be used in cross platform apps. We use Gulp and several plugins to build and manage the module bundles. Once a new module is added to a bundle config, the rest of the process is automated.
  23. All of our apps currently run on every YouView box going back to our first generation devices from 2012. Apps on our first generation device only end up with about 100Mb usable memory. Lazy loading speeds up launch times. Micro libraries, rather than large frameworks can improve launch time and memory use. In other areas, that we’ve not touched on: Sprite sheets can reduce network requests. CSS translations and requestAnimationFrame both produced good results for animation. Moving templating logic to the server can improve performance on the device.
  24. We’ve got a few minutes for questions now. We can be found in all the usual places online. Come and find us later if you have any more questions or if you’re interested in working with YouView.