Hello.

I am Paul Kinlan.

A Developer Advocate for Chrome and the Open Web at Google.

I love the web. The web should allow anyone to access any experience that they need without the need for native install or content walled garden.

Quick Picture in Picture Bookmarklet

Paul Kinlan

I created a simple bookmarklet for quickly enabling Picture-in-Picture mode for videos, even on sites that disable it. Drag the "Quick PIP" bookmarklet link to your bookmarks bar. When clicked, it activates PIP for the first actively playing video on the page or in any same-origin iframe. The bookmarklet's code is concise and avoids polluting the global scope. It efficiently finds the first playing video and requests Picture-in-Picture mode.

Read More

A simple video insertion tool for EditorJS

Paul Kinlan

I've created a simple video plugin for EditorJS, called simple-video, to easily embed videos. It's based on the simple-image plugin and allows for autoplay, mute, and control options. Check out the npm package and GitHub repo for more details!

Read More

Test post Video upload

Paul Kinlan

This is a test post to ensure video uploads are working correctly. If you can see the video below, the test was successful.

Read More

Creating a simple boomerang effect video in javascript

Paul Kinlan

Simple steps to create an instagram-like Video Boomerang effect on the web

Read More

894556 - Multiple video tracks in a MediaStream are not reflected on the videoTracks object on the video element

Paul Kinlan

While building a web-based video editor, I encountered an issue with handling multiple video tracks in a MediaStream. I wanted to switch between different video sources (desktop and webcam) on a single video element without interrupting the MediaRecorder. Attempting to do this by toggling the 'selected' property on the videoTracks object of the video element failed. The videoTracks array only contains the first video track added to the MediaStream, even though the stream itself contains both tracks. This prevents seamless switching between sources within the video element.

Read More

Seconds to HH:MM:SS.MS format

Paul Kinlan

I created a quick JavaScript function to convert seconds to an HH:MM:SS timecode format for use with tools like FFMPEG. The function takes in the total seconds and returns a formatted string.

Read More

Screen Recording from your Android device

Paul Kinlan

For our Google I/O 2013 talk, we needed a way to seamlessly showcase live demos on an Android device. Projector switching was clunky, so we pre-recorded the demos for smoother transitions. This post details our process. We used a Blackmagic Intensity Shuttle to capture high-quality HDMI output from a Galaxy Nexus (which thankfully doesn't enforce HDCP on HDMI). This setup, along with the Orientation Control app to maintain portrait mode, allowed us to create polished, in-line video demos. While this solution isn't cheap, the quality and seamless integration were worth the investment.

Read More

XNA Parallax Demo Video

Paul Kinlan

Check out my new video demo showcasing the simplicity of creating scrolling parallax layers in XNA. In under 3 minutes, I demonstrate how to build a parallax engine with layers, a camera, and scrollers, all without writing any code! The video covers basic scrolling and adding effects like oscillators. Watch it on YouTube, Google Video, or download the WMV. Feedback is welcome here or on the CodePlex forums.

Read More