Playground
Video blog
Short video posts on what I'm building, thinking about, or available for.
27 May 2026
TVProber, a remote developer suite for LG webOS and Samsung Tizen TVs
A walkthrough of TVProber, my desktop app for building, installing, and debugging TV apps on real LG webOS and Samsung Tizen sets without the usual CLI and SDK ceremony. Pair a TV, push an .ipk, watch live logs, and step into a Chromium inspector, all from one window.
Watch24 May 2026
OTNet and EZDRM: DASH plays, Safari HLS doesn't, looking for help
Sharing a short clip of our current EZDRM setup at OTNet. DASH playback works across browsers, but Safari HLS with FairPlay refuses to play. Asking the EZDRM team and anyone who's hit this before for a pointer.
Watch23 May 2026
OTNet and BuyDRM: a walkthrough of our encode and playback flow
A short video tour of how OTNet protects content with BuyDRM KeyOS, from a producer encoding a master on the desktop app, through DASH and HLS packaging, to a viewer pressing play with a license served via our session DRM proxy. Sharing the setup and asking for advice.
Watch18 May 2026
VybeKids, a coding playground for kids built on top of a real AI terminal
VybeKids is a voice powered coding playground for kids aged 6 to 14. It's the same engine as VybeCoding, my desktop terminal for AI coding agents, in a kid shaped wrapper: bigger buttons, brighter colours, parental PIN, auto approve, and starter quests.
Watch18 May 2026
OTNet: E2E media streaming, AI and API engineering (AAE)
Two years in on OTNet, a streaming platform I'm building end to end. This post is about the engineering shape of it: the media pipeline, the public API, the AI-readable surfaces, and the session DRM proxy that ties it all together.
Watch18 May 2026
Looking for work
A quick hello. I'm a Senior Software Engineer with 15+ years experience, specialising in media streaming, and I'm currently available for contract or permanent roles.
Watch2 June 2026
OTNet linear channel embed test
First end-to-end test of <otnet-video-player channel-ids="...">. The player calls /api/otnet/channel-session, which forwards to OTNet's per-channel playback handshake, resolves a stitched live DASH manifest plus a channel-scoped DRM session, and plays.
Watch