A British software developer living in Berlin. Most of my career has been focused on multimedia and entertainment applications, including broadcast automation, set-top-box middleware and cloud-based live video processing. I'm flexible though, and enjoy jumping into new challenges. Other work I've done recently includes automatically finding ads in Android apps, and keeping the device farm used for that running. I have lots of experience working with video formats and delivery mechanisms, including MPEG2-TS and WebRTC. I've worked on both Windows and Linux systems, but my more recent experience is mostly Linux (including within containers). I work mainly in C++, but I'm also very comfortable working in Rust, Golang or Java. I'm also very familiar with Python.

Michael Cullen

A British software developer living in Berlin. Most of my career has been focused on multimedia and entertainment applications, including broadcast automation, set-top-box middleware and cloud-based live video processing. I'm flexible though, and enjoy jumping into new challenges. Other work I've done recently includes automatically finding ads in Android apps, and keeping the device farm used for that running. I have lots of experience working with video formats and delivery mechanisms, including MPEG2-TS and WebRTC. I've worked on both Windows and Linux systems, but my more recent experience is mostly Linux (including within containers). I work mainly in C++, but I'm also very comfortable working in Rust, Golang or Java. I'm also very familiar with Python.

Available to hire

A British software developer living in Berlin. Most of my career has been focused on multimedia and entertainment applications, including broadcast automation, set-top-box middleware and cloud-based live video processing. I’m flexible though, and enjoy jumping into new challenges. Other work I’ve done recently includes automatically finding ads in Android apps, and keeping the device farm used for that running.

I have lots of experience working with video formats and delivery mechanisms, including MPEG2-TS and WebRTC. I’ve worked on both Windows and Linux systems, but my more recent experience is mostly Linux (including within containers).

I work mainly in C++, but I’m also very comfortable working in Rust, Golang or Java. I’m also very familiar with Python.

See more

Experience Level

Expert
Expert
Expert
Expert
Intermediate
Intermediate
Intermediate

Language

English
Fluent
German
Intermediate

Work Experience

Customer Support Engineer at Pebble Beach Systems
August 15, 2011 - November 5, 2012
Senior Software Developer at V-Nova
January 7, 2019 - July 5, 2019
Senior Software Developer at YouView TV
April 6, 2015 - December 7, 2018
Senior Software Developer at Pebble Beach Systems
November 5, 2012 - April 3, 2015

Education

Bachelor of Engineering - Electronic Engineering with Media Technology at University of York
October 6, 2008 - July 22, 2011

Qualifications

Add your qualifications or awards here.

Industry Experience

Software & Internet, Media & Entertainment
    paper Development of a system to insert subtitles into an existing transport-stream

    The task was to take an existing MPEG-2 transport stream, and merge in DVB-TXT subtitles live, using subtitles delivered over EBU-TT live (using a websocket)

    I designed and implemented, using some existing building blocks where possible, a program to read the input transport stream and create a low-resolution, low-latency preview to be sent to subtitlers. The subtitles were then received via a websocket in EBU-TT format (XML) and encoded as DVB-TXT, then merged into the existing stream.

    The DVB-TXT encoder was written in Rust, since it requires a lot of data manipulation, and therefore is ideal for Rust’s safety guarantees.

    The preview stream was generated using FFMpeg for encoding, and Nablet’s MPEG-2 muxer for mulitplexing. We considered using WebRTC for this, however the customer decided it was too hard to deploy for their network.

    paper Android Device Farm Management
    • Led further development of an Android ad-harvesting platform, with a strong focus on reliability, robustness, and defect resolution.
    • Advised on and executed device farm upgrades, including building and deploying a patched Android OS to meet project requirements.
    • Rebuilt and standardised backend servers controlling the device fleet using Ansible, dramatically improving consistency, repeatability, and maintainability.
    • Introduced infrastructure-as-code practices, providing living documentation of system configuration and reducing operational risk.