Digital Video Streaming Platform
Today digital video streaming is one of the primary ways that people interact with media content online. People have subscriptions to several services including Netflix, HBO, Hulu and Amazon Prime. Back in 2012-2013 before these services were available in Australia, I joined one of the largest national television broadcasters in Australia, Network Ten as a Junior Software Engineer. At the time broadcasters were faced with the challenge of embracing the future of on-demand streaming and offering users a way of streaming their favourite TV shows online.
Our team’s solution was to build TENplay - a fast, easy and user-friendly on-demand video streaming service available across every single platform available (Web, iOS, Android, Apple TV, Fetch TV, Windows Phone, Xbox, Apple TV and HBBTV). As a Junior Software Engineer, I spent time making contributions across several different parts of the platform, from building backend automation tools to building an Apple TV app and contributing to several iOS applications.
I wrote C# to serve up TVML/XML payloads at multiple endpoints that would be synced at regular intervals with the Apple TV client. This XML markup was generated by fetching content and image asset URLs from several backend services and following the strict formatting guidelines of the TVML specification.
I quickly found my passion for iOS and contributed to the bug fixes, maintenance and improvements of the TENplay iOS product. I worked alongside our Senior iOS Engineer to learn about the platform, the architecture, the design decisions made during development and found ways that I could contribute.
One of the ways I contributed to the app was by implementing a custom
UICollectionView pagination solution for the main video feed ViewController. Before
UICollectionView supported pagination natively, I used existing APIs such as
collectionView(UICollectionView, willDisplay: UICollectionViewCell, forItemAt: IndexPath) to paginate network requests for Image Assets as the user scrolls through the feed. I implemented an LRU cache to store Image Assets in-memory, preventing duplicate network requests for images in the cache and purging old image assets as needed or upon receiving Out of Memory warnings. This improved the overall framerate of the video feed screen from 44 fps to the recommended 60 fps.
I led pre-release testing parties, triaged and prioritized bug reports, ensuring a high standard of quality throughout each sprint and release.
As part of the TENplay platform, we built the Eyewitness News iOS app which enabled users to capture User Generated Content (UGC) on the fly to contribute to Network Ten’s broadcast News program. I collaborated with my colleague Craig Stanford on building the Eyewitness News application. I contributed to architecture discussions, learned about and helped design the backend REST API.
I became responsible for maintaining the app throughout my time at Network Ten, ensuring that the app received frequent updates and improvements. Resolving backend issues with content ingestion, automating the cleanup of stale and old content, as well as improving the end-to-end integration with the TENplay Eyewitness News website.
During the Sochi 2014 Winter Olympics, my team built an on-demand video streaming iOS application that offered users the ability to view catchup video from each of the Olympic Sports events as well as up to 6 simultaneous streams at one time in a dashboard. We worked with digital vendors such as Switch Media to Design, Develop and Support the product throughout the Olympic games. I contributed to the development of the project, building the Filtered Category screen and the Menu drawer as well as assisting with testing, bug fixes and sprint planning.
I applied my experience with programming to real world problems, building tools that assisted with the automation of a lot of previously manual tasks. I learned about delivering software at a large scale and mitigating a lot of the risks that are typically associated with systems used by a large number of people.